Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 379

/ вопрос открыт /

Приветствую!!Как програмно нажать на клавиши на клавиатуре?(Во время выполнения программы)

KilkaMS Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: KilkaMS (статус: Посетитель)
Вопрос отправлен: 6 марта 2007, 01:30
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: Вадим К

Я думаю это поможет
К сожалению работает хорошо, только когда фокус у вызывающего окна, в противном случае может глючить



procedure TForm1.SetKey(Key:Integer);
begin
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
end;

Применение

SetKey(VK_SCROLL);
SetKey(VK_CAPITAL);
SetKey(ord('A'));

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 6 марта 2007, 01:53
Оценка за ответ: 4

Ответ #2. Отвечает эксперт: Николай Рубан

Данные манипуляции можно произвести при помощи таких не хитрых действий (смотрите приложение).

В приложении используется такие команды:
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
keybd_event(Key,0,KEYEVENTF_EXTENDEDKEY,0);
где Key - код символа (кнопки) на который нужно нажать.

Вот еще несколько констант клавиш (их можно найти в справке):
VK_ESCAPE Escape
VK_SPACE Пробел
VK_PRIOR PageUp
VK_NEXT PageDown
VK_END клавиша End
VK_HOME клавиша Home
VK_LEFT клавиша влево
VK_UP клавиша вверх
VK_RIGHT клавиша вправо
VK_DOWN клавиша вниз
.....

В приложении идет обработка события нажатия на кнопку (Button1) форму, после чего в поле (Edit1) будет написано слово "hello".

Good Luck!!!

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3. Edit1.SetFocus;
  4. keybd_event(ord('H'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  5. keybd_event(ord('H'),0,KEYEVENTF_EXTENDEDKEY,0);
  6. keybd_event(ord('E'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  7. keybd_event(ord('E'),0,KEYEVENTF_EXTENDEDKEY,0);
  8. keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  9. keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY,0);
  10. keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  11. keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY,0);
  12. keybd_event(ord('O'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
  13. keybd_event(ord('O'),0,KEYEVENTF_EXTENDEDKEY,0);
  14.  
  15. end;


Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 6 марта 2007, 01:58
Оценка за ответ: 4

Ответ #3. Отвечает эксперт: Роман

Здравствуйте, KilkaMS!Щёлкнуть можно по разному;посмотрите на delphiworld.narod.ru/_os_.html в части клавиши,там с десяток разных вариантов реализации.

Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 6 марта 2007, 02:08
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 6 марта 2007, 02:06; участников в обсуждении: 1.
Николай Рубан

Николай Рубан (статус: 10-ый класс), 6 марта 2007, 02:06 [#1]:

[b]To Вадим К[/b]: Могли бы хоть немного видоизменить ответ с DelphiWorld ([url=http://delphiworld.narod.ru/base/click_key.html]Как программно нажать клавишу[/url]) либо ссылку просто написать..
;)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:43
Выполнено за 0.03 сек.