Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > отмена нажатий клавиш


Автор: Mind_master 20.10.2007, 14:27
Мне нужно ловить клик мыши при нажатом альте. Проверяю нажатия  в таймере через GetAsyncKeyState().
А как сделать так, чтобы после проверки клик не срабатывал?  smile  smile  smile 

Автор: VICTAR 20.10.2007, 15:45
Ловишь в своем приложении или во всей системе?

Автор: Mind_master 20.10.2007, 17:45
по всей системе!

Автор: Alexeis 20.10.2007, 17:57
  Тогда нужен глобальный хук. Только он может отменить нажатие клавиш.

Автор: Mind_master 22.10.2007, 10:26
А проще нельзя?

Автор: Alexeis 22.10.2007, 10:32
  Есть еще способ внедрения в системную библиотеку и вставка перехода на свою функцию, но врядли это можно назвать более простым способом.

Автор: Mind_master 22.10.2007, 18:55
 smile  smile  smile  smile  smile 
Тогда  как через хук?
А то с DLL еще не работал  smile  smile  smile 

Автор: Alexeis 22.10.2007, 19:12
 Тут полно примеров. Воспользуйтесь поиском по форуму

Автор: Vovanchik 29.10.2007, 14:40
Здравствуйте, у меня проблема.
Мне нужно чтобы моя программа могла эмитировать нажатие на клавиатуру.
Неплохо работает компонент SendKeys , но некоторые приложение зарание зная о таком компоненте или методе эмуляции нажатия не позволяют отправлять текст сообщение в ихнее окно.
 Вопрос в том как можно с эмитировать нажатие на клаву на более низком уровне. Может каким то макаром можно отправлять коды клавиш непосредственно в порт клавы, желательно с возможность отправки в неактивное окно. За понятный пример или конкретный код готов символически от благодарить.
Ещё раз напомню что sendkeys компонент не годится. Точнее сказать sendkeys не работает в игре lineage2 interlude.
Хотелось бы видеть реализацию dll или пример который бы заставил клавиатуру нажимать на клавиши.

Автор: Alix 29.10.2007, 22:28
честно не знаю, что за sendkeys, но в игре он не сработал, наверное, потому, что игра не сообщения ловит, а работает с клавой через DirectX, точнее DInput.
SendInput не пробовал?
Или, быть может, придется заюзать DInput, если мне не изменяет память, там можно было изменять содержимое буфера клавиатуры.

Автор: Mind_master 3.11.2007, 15:02
Vovanchik, 
Код

keybd_event(ord(K), 0, 0, 0);
keybd_event(ord(K), 0, KEYEVENTF_KEYUP, 0);


это нажимает и отпускает 'K' программно 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)