У меня проблема с регистратором клавиатуры. Все системы, протестированные до сегодняшнего дня, работают нормально, за исключением Windows 7 Embedded Standard 32 bit, которая, по-видимому, сходит с ума с текущей сборкой.
Что мне нужно сделать, так это записать нажатия клавиш, введенные с клавиатуры, пока я не получу их определенное количество. Когда я это делаю, я вызываю определенную процедуру.
У меня есть крючок, определенный следующим образом:
SetWindowsHookEx(WH_KEYBOARD_LL, keyboardProcedure, GetModuleHandle(NULL), 0);
и обратный вызов процедуры клавиатуры:
LRESULT CALLBACK SystemKeyboardReadWrite::keyboardProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
...
}
Я использую Qt 5.2 для этого приложения.
Итак, более подробно проблема возникает, когда вы слишком быстро вводите клавиши или удерживаете определенную клавишу в течение более длительного периода времени, что заставит клавиатуру отправлять несколько событий клавиатуры. Когда это произойдет, хук зависнет и больше не будет отправлять события обратному вызову. (не все приложение, приложение по-прежнему будет работать, за исключением кейлоггера)
Эта проблема возникает только в этой ОС, ни в одной другой ОС Windows 7 или Windows XP я не замечал этой проблемы. У меня есть 2 компьютера с одинаковой настройкой, и они оба показывают одну и ту же проблему, также я разрабатываю приложение на профессиональной Windows 7, и это тоже выглядит нормально. Мне интересно, является ли это проблемой с моим приложением, или это что-то вне моего контроля.
Спасибо всем за помощь.
static
? Помимо этого, обычная причина этой проблемы заключается в том, что внутри процедуры ловушки выполняется слишком много работы. Вы не показываете нам код, который там содержится, так что мы можем только догадываться. Хотя, конечно, это должно было вызвать проблемы в других системах. Я ни в коем случае не эксперт по встраиваемым Windows. Трудно представить, чем отличается. - person Cody Gray   schedule 22.08.2014static LRESULT CALLBACK keyboardProcedure(int nCode, WPARAM wParam, LPARAM lParam);
. Я вставил только голые кости, необходимые для решения проблемы, я вычислил небольшую сборку с относительно небольшим содержимым обратного вызова, и проблема все еще сохраняется, поэтому детали внутри обратного вызова не имеют значения. Но спасибо за внимание - person Trevor Donahue   schedule 22.08.2014