Возвращаясь к проблеме данного кода Глобальный хук клавиш. Оказалось он работает, НО только при установке Цели платформы х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 приведен здесь: Как отловить все клавиши через низкоуровневый хук?
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Разрабатываю алгоритмНе могу понять, как реализовтаь сдвиг элементов
Создал таблицу в конструкторе MS SQL ServerСвязал с DataGridView, настроил автоинкремент поля ID
На компьютере у одного пользователя не установлен SqlClientСоответственно у меня используются экземпляры класса System