| 
| 
 | Вопрос # 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]) либо ссылку просто написать.. 
   |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |