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