Search
Module:
Directory

   Desktop Functions:

   Smart Device Functions:


Show Recent Changes
Subscribe (RSS)
Misc. Pages
Comments
FAQ
Helpful Tools
Playground
Suggested Reading
Website TODO List
Support Forum
Download Visual Studio Add-In

Terms of Use
Privacy Policy
KBDLLHOOKSTRUCT (Structures)
 
.
Summary
The KBDLLHOOKSTRUCT structure contains information about a low-level keyboard input event

C# Definition:

[StructLayout(LayoutKind.Sequential)]
public class KBDLLHOOKSTRUCT
{
    public uint vkCode;
    public uint scanCode;
    public KBDLLHOOKSTRUCTFlags flags;
    public uint time;
    public UIntPtr dwExtraInfo;
}

[Flags]
public enum KBDLLHOOKSTRUCTFlags : uint {
    LLKHF_EXTENDED = 0x01,
    LLKHF_INJECTED = 0x10,
    LLKHF_ALTDOWN = 0x20,
    LLKHF_UP = 0x80,
}

private static IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam)
{
  if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
  {
    KBDLLHOOKSTRUCT kbd = (KBDLLHOOKSTRUCT) Marshal.PtrToStructure(lParam, typeof(KBDLLHOOKSTRUCT));
    Debug.WriteLine(kbd.vkCode);  // ***** your code here *****
  }
  return CallNextHookEx(_hookID, nCode, wParam, lParam);
}

Visual Basic 9 declaration

    <StructLayout(LayoutKind.Sequential)> _
    Public Structure KBDLLHOOKSTRUCT
        Public vkCode As UInt32
        Public scanCode As UInt32
        Public flags As KBDLLHOOKSTRUCTFlags
        Public time As UInt32
        Public dwExtraInfo As UIntPtr
    End Structure

    <Flags()> _
    Public Enum KBDLLHOOKSTRUCTFlags As UInt32
        LLKHF_EXTENDED = &H1
        LLKHF_INJECTED = &H10
        LLKHF_ALTDOWN = &H20
        LLKHF_UP = &H80
    End Enum

VB Definition:

    <StructLayout(LayoutKind.Sequential)> _
    Public Class KBDLLHOOKSTRUCT
    public vkCode As UInt32
    public scanCode As UInt32
    public flags As UInt32
    public time As UInt32
    public dwExtraInfo As UIntPtr
    End Class

Notes:

This is named "struct" to be consistent with the Windows API name, but it is defined as a class since it is passed as a pointer (AKA reference) in SetWindowsHookEx and CallNextHookEx. Or it can be defined as a struct and passed with ref (ByRef in VB.NET).

Documentation

http://msdn.microsoft.com/en-us/library/windows/desktop/ms644967(v=vs.85).aspx

Please edit this page!

Do you have...

  • helpful tips?
  • corrections to the existing content?
  • alternate definitions?
  • additional languages you want to include?

Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing any supporting types needed.

 
Access PInvoke.net directly from VS:
Terms of Use
Edit This Page
Find References
Show Printable Version
Revisions