COMO COLAR TEXTO DESENCRIPTADO

PROGRAMADORVB6 03/09/2012 18:44:03
#409104
Olá Galera.
Estou tentando fazer com que o que se copia para o clipboard não seja interceptado por outros programas espiões.
Para isso resolvi encriptar o que copio para o clipboard, mas quando tento fazer um Paste pelo menu , não é efectuada a desencriptação.
Tentei usar o comando : SendKeys.Send() para o envio , mas não é eficiente, porque não consegue produzir caracteres especiais, entre outros.
Alguém tem alguam ideia como posso contornar esta situação?



PROFESSOR 16/12/2012 02:17:06
#416027
Resposta escolhida
Entendo o problema.

Bem, podes tentar algo um pouco diferente.
Como sabemos, o Clipboard é capaz de armazenar objetos.
Assim, criar uma classe serializável que possa receber o criptografado, permite enviar instâncias do mesmo ao Clipboard, dificultando a captura do texto em sí. Resumindo, na prática:


[ô]...
<Serializable()> _
Public Class Secreto
Public Property Criptografado As String
Public Sub New()
End Sub
Public Sub New(ByVal parCriptografado As String)
Me.Criptografado = parCriptografado
End Sub
End Class
[ô]...
.

Após ter criptografado, para enviar o texto ao clipboard, seria algo como:


[ô]...
Dim o As New
Clipboard.SetDataObject(o)
[ô]...
.

Para carregar desde o clipboard é um pouco mais trabalhoso, pois o clipboard pode conter vários objetos simultaneamente e é preciso portanto identificar qual se deseja.
Por sorte, o método GetDataPresent do IDataObject facilita, pois carrega o nome do assemblie. Por exemplo, se o projeto chamar-se [Ô]MeuProjeto[Ô] e a classe, [Ô]Segredo[Ô], o método GetDataPresent retornaria o texto [Ô]MeuProjeto.Segredo[Ô], indicando que esse objeto é o que precisamos.
Carregar e obter o conteúdo criptografado, então, voltando ao código fica assim:


[ô]...
Dim conteudo As IDataObject = Clipboard.GetDataObject
If conteudo.GetDataPresent([Ô]MeuProjeto.Segredo[Ô]) Then
Dim o As Segredo = CType(conteudo.GetData([Ô]MeuProjeto.Segredo[Ô]), Segredo)
If o IsNot Nothing Then
MsgBox(o.Criptografado)
End If
End If
[ô]...
.

Com isso, outros aplicativos podem, sim, capturar o que há no clipbard, mas será mais dificultoso descubrir o que contém.

Espero que ajude.
Tópico encerrado , respostas não são mais permitidas