Trucos Evitar el uso del portapapeles (por ejemplo PrintScreen)

Puede que alguna vez mostremos información que no queramos que se pueda copiar al portapapeles para después guardarla o imprimirla. La solución "elegante" sería hacer un hook de teclado que procesara todos los mensajes de teclado del sistema y elimináramos las pulsaciones de la tecla PrintScreen pero esto no se puede hacer desde Visual Basic, debe hacerse desde una dll estandar.
Pero podemos hacer una pequeña "trampa" bloqueando el uso del portapapeles. Para ello declararemos en un módulo :

Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function EmptyClipboard Lib "user32" () As Long

En el evento load de la ventana que no queramos que se pueda copiar al portapapeles pondremos :

Dim b As Boolean

b = OpenClipboard(Me.hwnd)
If b Then
    b = EmptyClipboard()
End If

Y en el unload de la misma :

Dim b As Boolean

b = CloseClipboard()

Esto cubre nuestras necesidades pero tiene la pequeña pega de que el portapapeles no funcionará en todo el sistema hasta que cerremos el formulario, pero no se me ocurre otra cosa mejor. Si hay algún alma caritativa que sepa otra que no dude en mandármela para publicarla.



Trucos Trucos

Visual Basic Página de Visual Basic

Página principal Página principal

www.jrubi.com