Salve a tutti,
c'è qualche anima pia che può darmi una mano nella traduzione del seguente codice VB nel corrispondente codice C#?
codice:
' Form1.frm
Option Explicit
Implements KeyboardHook
Private Sub Form_Load()
Set KeyboardHandler.KeyboardHook = Me
HookKeyboard
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnhookKeyboard
End Sub
Private Function KeyboardHook_BlockAltEscape() As Boolean
End Function
Private Function KeyboardHook_BlockAltTab() As Boolean
End Function
Private Function KeyboardHook_BlockControlEscape() As Boolean
KeyboardHook_BlockControlEscape = True
End Function
' Keyboardhandler.bas - Demonstrates low-level keyboard hooks
' Copyright (c) 2002. All Rights Reserved
' By Paul Kimmel. pkimmel@softconcepts.com
'http://msdn.microsoft.com/library/default.asp?url=
'/library/en-us/winui/WinUI/WindowsUserInterface
'/Windowing/Hooks/HookReference/HookFunctions/LowLevelKeyboardProc.asp
Option Explicit
Public Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Public 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
Private Declare Sub CopyMemory Lib "kernel32" _
Alias "RtlMoveMemory" _
(pDest As Any, _
pSource As Any, _
ByVal cb As Long)
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer
Private Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Type KBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
' Low-Level Keyboard Constants
Private Const HC_ACTION = 0
Private Const LLKHF_EXTENDED = &H1
Private Const LLKHF_INJECTED = &H10
Private Const LLKHF_ALTDOWN = &H20
Private Const LLKHF_UP = &H80
' Virtual Keys
Public Const VK_TAB = &H9
Public Const VK_CONTROL = &H11
Public Const VK_ESCAPE = &H1B
Public Const VK_DELETE = &H2E
Private Const WH_KEYBOARD_LL = 13&
Public KeyboardHandle As Long
Public KeyboardHook As KeyboardHook
' Implement this function to block as many key combinations as
' you'd like
Public Function IsHooked(ByRef Hookstruct As KBDLLHOOKSTRUCT) _
As Boolean
If (KeyboardHook Is Nothing) Then
IsHooked = False
Exit Function
End If
If (Hookstruct.vkCode = VK_ESCAPE) And _
CBool(GetAsyncKeyState(VK_CONTROL) _
And &H8000) Then
IsHooked = KeyboardHook.BlockControlEscape
Call HookedState(IsHooked, "Ctrl + Esc blocked")
Exit Function
End If
If (Hookstruct.vkCode = VK_TAB) And _
CBool(Hookstruct.flags And _
LLKHF_ALTDOWN) Then
IsHooked = KeyboardHook.BlockAltTab
Call HookedState(IsHooked, "Alt + Tab blocked")
Exit Function
End If
If (Hookstruct.vkCode = VK_ESCAPE) And _
CBool(Hookstruct.flags And _
LLKHF_ALTDOWN) Then
IsHooked = KeyboardHook.BlockAltEscape
Call HookedState(IsHooked, "Alt + Escape blocked")
Exit Function
End If
End Function
Private Sub HookedState(ByVal Hooked As Boolean, _
ByVal Text As String)
If (Hooked) Then Debug.Print Text
End Sub
Public Function KeyboardCallback(ByVal Code As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Static Hookstruct As KBDLLHOOKSTRUCT
If (Code = HC_ACTION) Then
' Copy the keyboard data out of the lParam (which is a pointer)
Call CopyMemory(Hookstruct, ByVal lParam, Len(Hookstruct))
If (IsHooked(Hookstruct)) Then
KeyboardCallback = 1
Exit Function
End If
End If
KeyboardCallback = CallNextHookEx(KeyboardHandle, _
Code, wParam, lParam)
End Function
Public Sub HookKeyboard()
KeyboardHandle = SetWindowsHookEx( _
WH_KEYBOARD_LL, AddressOf KeyboardCallback, _
App.hInstance, 0&)
Call CheckHooked
End Sub
Public Sub CheckHooked()
If (Hooked) Then
Debug.Print "Keyboard hooked"
Else
Debug.Print "Keyboard hook failed: " & Err.LastDllError
End If
End Sub
Private Function Hooked()
Hooked = KeyboardHandle <> 0
End Function
Public Sub UnhookKeyboard()
If (Hooked) Then
Call UnhookWindowsHookEx(KeyboardHandle)
End If
End Sub
' KeyboardHook.cls
Public Function BlockControlEscape() As Boolean
End Function
Public Function BlockAltEscape() As Boolean
End Function
Public Function BlockAltTab() As Boolean
End Function
Alcune cose sono riuscito a tradurle, ma altre, non conoscendo il VB, no 
Grazie anticipatamente a chiunque