|
Вопрос # 379/ вопрос открыт / |
|
Приветствую!!Как програмно нажать на клавиши на клавиатуре?(Во время выполнения программы)
 |
Вопрос задал: 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!!!
Приложение: Переключить в обычный режим- procedure TForm1.Button1Click(Sender: TObject);
- begin
- Edit1.SetFocus;
- keybd_event(ord('H'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
- keybd_event(ord('H'),0,KEYEVENTF_EXTENDEDKEY,0);
- keybd_event(ord('E'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
- keybd_event(ord('E'),0,KEYEVENTF_EXTENDEDKEY,0);
- keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
- keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY,0);
- keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
- keybd_event(ord('L'),0,KEYEVENTF_EXTENDEDKEY,0);
- keybd_event(ord('O'),0,KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP,0);
- keybd_event(ord('O'),0,KEYEVENTF_EXTENDEDKEY,0);
-
- 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]) либо ссылку просто написать..
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|