![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 17.01.2011
Сообщений: 3
|
![]()
Нужно нажать комбинацию клавиш alt+лево в IE.
Написал по уже имеющемуся примеру на форуме данный код но по исполнению нечего не происходит. Код:
Последний раз редактировалось Stilet; 17.01.2011 в 16:37. |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
А все потому что keybd_event заставляет реагировать активное окно (в твоем случае твою форму) а не какое то там.
Ты нашел WinHanlde, теперь ему нужно посылать сообщения WM_KEYDOWN,WM_KEYUP в найденное окно. http://yandex.ua/yandsearch?date=&te...=8981&lr=20554
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Очень суровый
Участник клуба
Регистрация: 17.12.2009
Сообщений: 1,988
|
![]()
http://delphiexpert.ru/view_lesson.php?id=15 помоему как раз то что нужно..
Ненавижу быть как все, но люблю, чтобы все были как я.
|
![]() |
![]() |
![]() |
#4 |
Новичок
Джуниор
Регистрация: 17.01.2011
Сообщений: 3
|
![]()
С одно клавишей теперь работает, но комбинация не воспримется.
Где ошибка? procedure TForm1.Button5Click(Sender: TObject); var WinHanlde: HWnd; begin WinHanlde := FindWindow('IEFrame', nil); if (0 <> WinHanlde) then PostMessage(WinHanlde, WM_KEYDOWN, 164, 0); PostMessage(WinHanlde, WM_KEYDOWN, 37, 0); PostMessage(WinHanlde, WM_KEYUP, 164, 0); PostMessage(WinHanlde, WM_KEYUP, 37, 0); end; |
![]() |
![]() |
![]() |
#5 |
Новичок
Джуниор
Регистрация: 17.01.2011
Сообщений: 3
|
![]()
Так всё нашел решение. Надеюсь кому-нибудь пригодится.
procedure TForm1.Button5Click(Sender: TObject); var h : HWnd; h2 : HWnd; begin h := FindWindow('IEFrame', nil); h2 := FindWindowEx(h,0,'IEFrame',0); h2 := FindWindowEx(h2,0,'IEFrame',0); SetForegroundWindow(h); PostMessage(h2, WM_SETFOCUS,0,0); keybd_event(VK_LMENU, MapVirtualKey(VK_CONTROL, 0), 0, 0); keybd_event(VK_LEFT, MapVirtualKey(Ord('C'), 0), 0, 0); keybd_event(VK_LEFT, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_LMENU, MapVirtualKey(VK_CONTROL,0), KEYEVENTF_KEYUP, 0); end; Через PostMessage и SendMessage нажатие комбинаций видимо сделать нельзя. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Эмуляция клавиш в неактивном окне | Аникейка | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 17.11.2010 09:21 |
Нажатие комбинации клавиш | Sparky | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 09.12.2009 12:43 |
Нажатие комбинации клавиш | pix_l | Общие вопросы Delphi | 7 | 31.03.2009 10:12 |
Нажатие мыши в неактивном окне? | sanchopansa | Общие вопросы Delphi | 3 | 16.07.2008 08:18 |
сделать нажатие клавиш, в неактивном приложении | Димарик | Общие вопросы Delphi | 1 | 22.06.2007 22:48 |