Как мне захватить как большие, так и маленькие клавиши с помощью (Keys) Marshal.ReadInt32 (lParam)
+ проверки Shift.
Я хочу научиться захватывать все клавиши клавиатуры, но не знаю, как это сделать правильно.
public delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam);
private static readonly LowLevelKeyboardProc _proc = HookCallback;
private static IntPtr _hookID = IntPtr.Zero;
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
try
{
Console.WriteLine((Keys)Marshal.ReadInt32(lParam));
}
catch (AccessViolationException ex) { Console.WriteLine($"Error: {ex.ToString()}"); }
}
return NativeMethods.CallNextHookEx(_hookID, nCode, wParam, lParam);
}
Многое не понятно.А как можно определить символьные клавиши?
Можно ли конвертировать ключи ToUnicodeEx?