Возвращаясь к проблеме данного кода Глобальный хук клавиш. Оказалось он работает, НО только при установке Цели платформы х32. Моя программа разработана для x64 систем.
При попытке нажатия определенной клавиши возникает следующая ошибка:
Необработанное исключение типа "System.AccessViolationException" в mscorlib.dll Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.
На строку:
Int32 vkCode = Marshal.ReadInt32((IntPtr)L);
Как это можно исправить (используя онли x64)?
Размер указателей в x64 не совпадает с размером типа int. Если вы используете для представления указателей тип int, он будет работать только в x86. Правильное объявление Low-Level Keyboard Hook callback должно выглядеть так:
IntPtr KeyboardHookCallback(int nCode, IntPtr wParam, IntPtr lParam)
Тип IntPtr соответствует размерности указателя текущей платформы. Вообще, полный рабочий пример кода с Low-Level Keyboard Hook приведен здесь: Как отловить все клавиши через низкоуровневый хук?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости