[StructLayout(LayoutKind.Sequential)]
public class KBDLLHOOKSTRUCT
{
public UInt32 vkCode;
public UInt32 scanCode;
public UInt32 flags;
public UInt32 time;
public IntPtr dwExtraInfo;
}
<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 IntPtr
End Class
This is named "struct" to be consistent with the Windows API name, but it must be a class since it is passed as a pointer (AKA reference) in in SetWindowsHookEx and CallNextHookEx.