![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
decoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 18.5.2004 Где: Харьков(хохол, к сожалению) Репутация: 1 Всего: -1 |
нажатие одной клавиши - эт элементарно:
PostMessage(Wnd, WM_KEYDOWN, Key, 0); PostMessage(Wnd, WM_KEYUP, Key, 0); А как ещё и Key + VK_SHIFT + VK_CONTROL симитировать? В lParam вроде состояние 256 клавиш поидее быть не должно... --------------------
Молчать, я вас спрашиваю! |
|||
|
||||
VIY |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 13.10.2004 Репутация: нет Всего: нет |
Посмотри, может это поможет:
Как сделать имитацию ввода с клавиатуры для программы выполняющейся в DOS-окне const ExtendedKeys: set of Byte = [ // incomplete list VK_INSERT, VK_DELETE, VK_HOME, VK_END, VK_PRIOR, VK_NEXT, VK_LEFT, VK_UP, VK_RIGHT, VK_DOWN, VK_NUMLOCK ]; procedure SimulateKeyDown(Key: byte); var flags: DWORD; begin if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0; keybd_event(Key, MapVirtualKey(Key, 0), flags, 0); end; procedure SimulateKeyUp(Key: byte); var flags: DWORD; begin if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0; keybd_event(Key, MapVirtualKey(Key, 0), KEYEVENTF_KEYUP or flags, 0); end; procedure SimulateKeystroke(Key: byte); var flags: DWORD; scancode: BYTE; begin if Key in ExtendedKeys then flags := KEYEVENTF_EXTENDEDKEY else flags := 0; scancode := MapVirtualKey(Key, 0); keybd_event(Key, scancode, flags, 0); keybd_event(Key, scancode, KEYEVENTF_KEYUP or flags, 0); end; |
|||
|
||||
decoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 18.5.2004 Где: Харьков(хохол, к сожалению) Репутация: 1 Всего: -1 |
VIY, покажи, как симитировать, например, Ctrl+Shift+C пользуясь твоей программой (я так понял, симитировать нажатие двух клавиш одновременно твоя програ не может)...
А ваще, я уже свой вариант сделал, тока пока проверить не могу: PostMessage(Wnd, WM_KEYDOWN, VK_CONTROL, 0); PostMessage(Wnd, WM_KEYDOWN, VK_SHIFT, 0); PostMessage(Wnd, WM_KEYDOWN, Ord('C'), 0); PostMessage(Wnd, WM_KEYUP, Ord('C'), 0); PostMessage(Wnd, WM_KEYUP, VK_SHIFT, 0); PostMessage(Wnd, WM_KEYUP, VK_CONTROL, 0); Скажите, работать будет? --------------------
Молчать, я вас спрашиваю! |
|||
|
||||
VIY |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 13.10.2004 Репутация: нет Всего: нет |
нажатие CTRL+A
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), 0, 0); keybd_event(Ord('A'), MapVirtualKey(Ord('A'), 0), KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), KEYEVENTF_KEYUP, 0); А, твои примеры у меня не заработали (правда в хелпе написано, мол 30-й бит у lParam надо ставить в 1, но честно говоря сколько пробовал не помогает) (ЗЫ:Пробовал в DELPHI 5) |
|||
|
||||
decoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 18.5.2004 Где: Харьков(хохол, к сожалению) Репутация: 1 Всего: -1 |
VIY, фактически, эт реализация моей идеи. Другое дело, почему с PostMessage не работает?..
На каких Виндах пробрвал? --------------------
Молчать, я вас спрашиваю! |
|||
|
||||
Guest |
|
|||
Unregistered |
WINDOWS 98
|
|||
|
||||
VIY |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 13.10.2004 Репутация: нет Всего: нет |
Сори за предыдущее сообщение.
|
|||
|
||||
JOHN_PROFF |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 27.10.2004 Репутация: нет Всего: нет |
||||
|
||||
VIY |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 13.10.2004 Репутация: нет Всего: нет |
Спасибо за ссылку.
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 1 Всего: 207 |
Перенесенно из раздела Delphi: Общие вопросы
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
decoder |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 204 Регистрация: 18.5.2004 Где: Харьков(хохол, к сожалению) Репутация: 1 Всего: -1 |
B msdn сказано, мол keybd_event XP заменён на SendInput. То есть, keybd_event работать не будет? У меня 98-ые, проверить не могу...
--------------------
Молчать, я вас спрашиваю! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |