Amigo pues el código este que te di esta en visual basic 6.0 pero conseguí algo que tal vez te pueda ayudar a resolver tu problema, amm el vb.net 2008 no lo he manejado mucho pero en lo que te pueda ayudar nada más avisame.
Este ejemplo desactiva el botón derecho del ratón de una de las ventanas creadas por microsoft Visual Basic. Para probar el ejemplo sigue los siguientes pasos:
1. Cree un nuevo proyecto de tipo "Exe estándar".
2. Añada un nuevo módulo (. VAS) y agréguele el nombre de "HookMod".
Renombre el formulario creado por defecto a "HookForm".
3. Añada dos CommandButton y un Textbox. Los CommandButton deben
tener las siguientes propiedades:
Command1 Name: BtnHook
Caption: Hook
Command2 Name: BtnUnHook
Caption: UnHook
4. En el formulario copie el siguiente código:
Private Sub BtnHook_Click()
PonerHook
End Sub
Private Sub BtnUnHook_Click()
QuitarHook
End Sub
5. En el módulo de la aplicación copie el siguiente código:
Declare Function SetWindowsHookEx Lib "user32" Alias _
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As_
Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" (ByVal_
Hhook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal Hhook As_
Long, ByVal ncode As Long, ByVal wParam As Long, lParam As_
Any) As Long
Declare Function GetWindowThreadProcessId Lib "user32"_
(ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Const WH_MOUSE = 7
Public Const HC_NOREMOVE = 3
Public Const WM_NCRBUTTONDOWN = &HA4
Public Const WM_RBUTTONDOWN = &H204
Global Hhook As Long 'Identificador del hook
' Función callback
Public Function MouseProc(ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
If uMsg < 0 Then
MouseProc = CallNextHookEx(Hhook, uMsg, wParam, lParam)
End If
' Se comprueba si el mensaje es el botón derecho del ratón
' Si es así se ignora y se produce un beep
' De lo contrario se da la oportunidad a otros hooks de
procesar el mensaje.
If uMsg <> HC_NOREMOVE And (wParam = WM_RBUTTONDOWN Or _
wParam = WM_NCRBUTTONDOWN) Then
Beep
MouseProc = 1
Else
MouseProc = CallNextHookEx(Hhook, uMsg, wParam, lParam)
End If
End Function
Public Sub PonerHook()
Hhook = SetWindowsHookEx(WH_MOUSE _ ' Hook de ratón
, AddressOf MouseProc _ ' Dirección de la función callback
, 0 ' Handle del módulo
, GetWindowThreadProcessId(HookForm.hwnd, 0)) ' Id del
' thread que creó la ventana
End Sub
Public Sub QuitarHook()
UnhookWindowsHookEx Hhook
End Sub
6. Para probar el ejemplo, pulse el botón derecho del ratón sobre
el TextBox. Comprobará que aparece un menú contextual. Pulse a
continuación el botón en el que pone Hook. Haga clic con el
botón derecho del ratón sobre el TextBox. Comprobará que ya no
aparece el menú contextual y en su lugar suena un pitido. Para
desinstalar el hook pulse en el botón UnHook.
NOTA: En Visual Basic sólo se pueden instalar hooks para ventanas
creadas dentro de la aplicación, ya que para establecer un hook en una
ventana creada por un proceso diferente, la función filtro o callback
debe de estar en una DLL. Las DLLs creadas por Microsoft Visual Basic
no sirven para crear hooks.
Prueba esto y después veremos que pasa si no te sale me avisas mandándome un correo a
[email protected], con gusto aclarare tus dudas.