Форум: "WinAPI";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
ВнизЭмуляция нажатия клавиш в форме Найти похожие ветки
← →
Semenyak (2002-10-24 14:02) [0]Уважаемые мастаки! Неужели никто не знает, как программно "нажать" комбинацию клавиш Ctrl+P в окне???
← →
Игорь Шевченко (2002-10-24 14:16) [1]keybd_event
← →
Ru (2002-10-24 16:08) [2]а откуда это keybd_event?
← →
Song (2002-10-24 16:23) [3]Из АПИ
← →
Gayrus (2002-10-25 03:48) [4]Что-то вроде этого:
Keybd_Event(VK_CONTROL,0,0,0);
Keybd_Event(Ord("P"),0,0,0);
Keybd_Event(Ord("P"),0,KEYEVENTF_KEYUP,0);
Keybd_Event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
← →
Dm9 (2002-10-25 05:58) [5]SendMessage (YourWindow.Handle, WM_KeyDown, Ord("P"), 0);
SendMessage (YourWindow.Handle, WM_KeyUp, Ord("P"), 0); -
это без контрола.
А если с ним - не пробовал, но должно работать:
SendMessage (YourWindow.Handle, WM_KeyDown, 17, 0);
SendMessage (YourWindow.Handle, WM_KeyDown, Ord("P"), 0);
SendMessage (YourWindow.Handle, WM_KeyUp, Ord("P"), 0);
SendMessage (YourWindow.Handle, WM_KeyUp, 17, 0);
Или код контрола 16? По-моему, 17. Проверь - в обработчик onKeyDown вставь ShowMessge (IntToStr (Key)) и нажми ctrl.
Получившееся число поставь вместо 17 (хотя, по-моему, там всё-таки 17, а делфи самому загружать в лом сейчас :=)
← →
uktus (2002-11-17 11:57) [6]Варианты :
SendMessage (YourWindow.Handle, WM_KeyDown, VK_CONTROL,0);
SendMessage (YourWindow.Handle, WM_KeyDown, Ord("P"), 0);
SendMessage (YourWindow.Handle, WM_KeyUp, Ord("P"), 0);
SendMessage (YourWindow.Handle, WM_KeyUp, VK_CONTROL,0);
или то же самое с keybd_event не работают.
Мне тоже нужно сэмулировать нажатие "Ctrl(Shift)+любая кнопка" в окне чужой программы.
Простое нажатие одной клавиши легко выполняется путем посылки 2-ух сообщений:
SendMessage (Handle, WM_KeyDown, Ord("P"), 0);
SendMessage (Handle, WM_KeyUp, Ord("P"), 0);
Но как сделать то же самое с комбинацией 2-ух клавиш ???
Конкретный пример: послать команду "Play" на Windows Media Player: Ctrl+P
← →
chips (2002-11-19 16:30) [7]procedure TForm1.Button1Click(Sender: TObject);
var
w: word;
winhandl:HWND;// - handle окна в которое отсылаешь
own:HWND; // -handle твоего приложения
begin
SetForeGroundWindow(winhandl);
keybd_event(vk_control, 0, 0, 0);
w:=VkKeyScan("p");
keybd_event(w,0,0,0);
keybd_event(w,0,KEYEVENTF_KEYUP,0);
keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);
SetForegroundWindow(own);// а теперь обратно
end;
← →
chips (2002-11-19 16:30) [8]procedure TForm1.Button1Click(Sender: TObject);
var
w: word;
winhandl:HWND;// - handle окна в которое отсылаешь
own:HWND; // -handle твоего приложения
begin
SetForeGroundWindow(winhandl);
keybd_event(vk_control, 0, 0, 0);
w:=VkKeyScan("p");
keybd_event(w,0,0,0);
keybd_event(w,0,KEYEVENTF_KEYUP,0);
keybd_event(vk_control,0,KEYEVENTF_KEYUP,0);
SetForegroundWindow(own);// а теперь обратно
end;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.01.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c