Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 17:19   #1
Andrew)
 
Регистрация: 06.02.2011
Сообщений: 3
По умолчанию Отслеживание программного нажатия клавиш.

Всем привет !! У меня такой вопрос:
Известно, что можно нажимать клавиши и кликать мышкой программно.
Но можно ли отследить ЭТО программное нажатие клавиш ????
Andrew) вне форума Ответить с цитированием
Старый 06.02.2011, 17:24   #2
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

у формы в событях есть такое своиство OnKeyPress
оно есть и у других компонент
Google -> OnKeyPress
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 06.02.2011, 17:36   #3
Andrew)
 
Регистрация: 06.02.2011
Сообщений: 3
По умолчанию

Как делать действия программно, я знаю.
У меня вопрос: можно ли отследить, что нажатие произошло ПРОГРАММНО, а не человек щелкнул по клавиатуре....
Andrew) вне форума Ответить с цитированием
Старый 07.02.2011, 10:06   #4
Slippy
Пользователь
 
Аватар для Slippy
 
Регистрация: 29.12.2010
Сообщений: 55
По умолчанию

когда пользователь жмёт на клавишу, отсылается системное событие, которое можно отловить либо тем же OnKeyPress, либо хуком, возможно есть еще способы...

если же нажатие происходит программно - всё зависит от реализации. прежде всего стоит определить, рассылается ли в этом случае такое-же системное событие. если да - то нет проблемы. если нет - можно, например, зарегестрировать своё событие и отсылать вручную.
Теория – это когда все известно, но ничего не работает. Практика – это когда все работает, но никто не знает почему. Мы объединяем теорию и практику: ничего не работает и никто не знает почему ©
Slippy вне форума Ответить с цитированием
Старый 07.02.2011, 10:14   #5
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Нажатие из самой программы происходит или из другого приложения?

Если из самой программы
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Sender = Button1 then
    ShowMessage ('Пользователь')
  else
    ShowMessage ('Программа');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Button1Click (Sender);
end;
Если из другого приложения
то все немного сложнее. Можно попробовать следить за мышкой и при срабатывании события проверять ее позицию и состояние. Но 100% гарантии в таком случае всеравно нет.

Последний раз редактировалось Sibedir; 07.02.2011 в 10:22.
Sibedir вне форума Ответить с цитированием
Старый 07.02.2011, 10:17   #6
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ставь хук WH_LL_MOUSE - он дает доступ к этой информации.
mss вне форума Ответить с цитированием
Старый 07.02.2011, 11:02   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Спасибо mss.

Подробности тута и тута
Sibedir вне форума Ответить с цитированием
Старый 07.02.2011, 15:14   #8
Andrew)
 
Регистрация: 06.02.2011
Сообщений: 3
По умолчанию

Спасибо)
Буду разбираться.
Andrew) вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
имитация нажатия клавиш RAVAL(c) HTML и CSS 10 07.02.2011 12:29
Комбинация нажатия клавиш IraPr Microsoft Office Access 1 04.10.2010 11:31
нажатия клавиш на клавиатуре include Общие вопросы Delphi 4 24.06.2009 16:26
Перехват нажатия клавиш. Vi_russ Общие вопросы Delphi 1 02.12.2008 20:25
отслеживание нажатий клавиш Артэс Win Api 6 14.06.2008 20:02