title: Converting vb.net to c#
body: <p>i tried the code below to convert it to c#. But i am getting many errors when i use it.
  Like error related to || and &amp;&amp; symbols using in c# version.</p>
  
  <p>can any one help me to convert to perfect c# code ?? Thanks.</p>
  
  <pre><code>Option Explicit On 
  Option Strict On
  
  Imports Microsoft.Win32
  Imports System.Runtime.InteropServices
  
  Public Class Kiosk
      Implements IDisposable
  
  #Region "IDisposable"
  
      '' Implementing IDisposable since it might be possible for
      '' someone to forget to cause the unhook to occur.  I didn''t really
      '' see any problems with this in testing, but since the SDK says
      '' you should do it, then here''s a way to make sure it will happen.
  
      Public Overloads Sub Dispose() Implements IDisposable.Dispose
          Dispose(True)
          GC.SuppressFinalize(Me)
      End Sub
  
      Protected Overridable Overloads Sub Dispose(ByVal disposing As Boolean)
          If disposing Then
              '' Free other state (managed objects).
          End If
          If m_hookHandle &lt;&gt; 0 Then
              UnhookWindowsHookEx(m_hookHandle)
              m_hookHandle = 0
          End If
          If m_taskManagerValue &gt; -1 Then
              EnableTaskManager()
          End If
      End Sub
  
      Protected Overrides Sub Finalize()
          Dispose(False)
      End Sub
  
  #End Region
  
      Shared Sub main()
  
      End Sub
      Private Delegate Function LowLevelHookDelegate(ByVal code As Integer, ByVal wParam As Integer, ByRef lParam As KeyboardLowLevelHookStruct) As Integer
  
      Private Const Hc_Action As Integer = 0
      Private Const WindowsHookKeyboardLowLevel As Integer = 13
      Private Const LowLevelKeyboardHfAltDown As Integer = &amp;H20
  
      Private Enum WindowsMessage
          KeyDown = &amp;H100
          KeyUp = &amp;H101
          SystemKeyDown = &amp;H104
          SystemKeyUp = &amp;H105
      End Enum
  
      Private Enum Vk
          Tab = &amp;H9
          Escape = &amp;H1B
          Shift = &amp;H10
          Control = &amp;H11
          Menu = &amp;H12         '' ALT key.
          Alt = &amp;H12
          Pause = &amp;H13
          LeftWindows = &amp;H5B  '' Left Windows key (Microsoft® Natural® keyboard).
          RightWindows = &amp;H5C '' Right Windows key (Natural keyboard).
          Applications = &amp;H5D '' Applications key (Natural keyboard).
      End Enum
  
      Private Structure KeyboardLowLevelHookStruct
          Public VirtualKeyCode As Integer
          Public ScanCode As Integer
          Public Flags As Integer
          Public Time As Integer
          Public ExtraInfo As UInt32
      End Structure
  
      Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal hook As Integer, ByVal address As LowLevelHookDelegate, ByVal [mod] As Integer, ByVal threadId As Integer) As Integer
      Private Declare Function CallNextHookEx Lib "user32" (ByVal handle As Integer, ByVal code As Integer, ByVal wParam As Integer, ByVal lParam As KeyboardLowLevelHookStruct) As Integer
      Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal handle As Integer) As Integer
      Private Declare Function GetAsyncKeyState Lib "user32" (ByVal virtualKey As Integer) As Integer
  
      Private m_hookHandle As Integer
  
      Private Function LowLevelHook(ByVal code As Integer, ByVal wParam As Integer, ByRef lParam As KeyboardLowLevelHookStruct) As Integer
  
          If code = Hc_Action Then
  
              If (wParam = WindowsMessage.KeyDown) OrElse _
                 (wParam = WindowsMessage.SystemKeyDown) OrElse _
                 (wParam = WindowsMessage.KeyUp) OrElse _
                 (wParam = WindowsMessage.SystemKeyUp) Then
  
                  ''Dim alt As Boolean = (GetAsyncKeyState(Vk.Alt) And &amp;H8000) = &amp;H8000
                  ''Dim shift As Boolean = (GetAsyncKeyState(Vk.Shift) And &amp;H8000) = &amp;H8000
                  Dim control As Boolean = (GetAsyncKeyState(Vk.Control) And &amp;H8000) = &amp;H8000
  
                  Dim suppress As Boolean
  
                  '' CTRL+ESC
                  If control AndAlso lParam.VirtualKeyCode = Vk.Escape Then
                      suppress = True
                  End If
  
                  '' ALT+TAB
                  If (lParam.Flags And LowLevelKeyboardHfAltDown) = LowLevelKeyboardHfAltDown AndAlso lParam.VirtualKeyCode = Vk.Tab Then
                      suppress = True
                  End If
  
                  '' ALT+ESC
                  If (lParam.Flags And LowLevelKeyboardHfAltDown) = LowLevelKeyboardHfAltDown AndAlso lParam.VirtualKeyCode = Vk.Escape Then
                      suppress = True
                  End If
  
                  '' Left Windows button.
                  If lParam.VirtualKeyCode = Vk.LeftWindows Then
                      suppress = True
                      MessageBox.Show("Pressed Left windows key")
                  End If
  
                  '' Right Windows button.
                  If lParam.VirtualKeyCode = Vk.RightWindows Then
                      suppress = True
                      MessageBox.Show("Pressed Right windows key")
                  End If
  
                  '' Applications button.
                  If lParam.VirtualKeyCode = Vk.Applications Then
                      suppress = True
                  End If
  
                  If suppress Then
                      Return 1
                  End If
  
              End If
  
              Return CallNextHookEx(m_hookHandle, code, wParam, lParam)
  
          End If
  
      End Function
  
      Public Sub Disable()
          If m_hookHandle = 0 Then
              m_hookHandle = SetWindowsHookEx(WindowsHookKeyboardLowLevel, AddressOf LowLevelHook, Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly.GetModules()(0)).ToInt32, 0)
          End If
      End Sub
  
      Public Sub Enable()
          If m_hookHandle &lt;&gt; 0 Then
              UnhookWindowsHookEx(m_hookHandle)
              m_hookHandle = 0
          End If
      End Sub
  
  End Class
  </code></pre>