-
Существует чужое окно. Необходимо из своего приложения нажать в чужом окне комбинацию Ctrl-P. Пробовал через PostMessage, но как сообщить параметру "Кеу" что нажата именно комбинация (Ctrl-P) я не знаю.
Key:=Byte('P'); {??? Куда Ctrl привязать ???} PostMessage(Handle, WM_KEYDOWN, Key, 0);
-
Через keybd_event пробуй... Только окно активным сделать не забудь.
-
Проблема как раз в том, что фокус менять нельзя, даже кратковременно!
-
> Grademax (28.02.08 10:48) [2]
> Проблема как раз в том, что фокус менять нельзя, даже кратковременно!
Попробуй найти WM_COMMAND, соответствующее этому акселератору. См., например, как потрошить главное меню Notepad.
-- Regards, LVT.
-
-
Все аналогично. Почти :)
Procedure SendKey(H: HWnd; Key: Byte);
Var
vKey, ScanCode, WParam : WORD;
LParam, ConvKey : LongInt;
Begin
ConvKey := OemKeyScan(Ord(Key));
ScanCode := ConvKey And $000000FF Or $FF00;
vKey := Key;
WParam := vKey;
LParam := LongInt(ScanCode) Shl 16;
SendMessage(H, WM_KEYDOWN, WParam, LParam);
SendMessage(H, WM_CHAR, WParam, LParam);
LParam := LParam Or $C0000000;
SendMessage(H, WM_KEYUP, WParam, LParam);
End;
begin
SendMessage(H, WM_KEYDOWN, VK_CONTROL, 0);
SendKey(H, 'P');
SendMessage(H, WM_KEYUP, VK_CONTROL, 0);
end;
-
Пардон: begin
SendMessage(H, WM_KEYDOWN, VK_CONTROL, 0);
SendKey(H, Ord('P')); SendMessage(H, WM_KEYUP, VK_CONTROL, 0);
end;
-
> MikeZ (28.02.08 13:11) [5]
> Все аналогично. Почти :)
Ну, и попробуй послать, скажем, Ctrl+V в EDIT Notepad.
-- Regards, LVT.
-
"Да, не выходит, мастер, каменный цветок" :( Значит, не везде этот способ работает - я его из свой программы выдрал, значит, всё же есть ситуации, где он прокатывает.
-
Наверное, потому, что это Edit и ему WM_SETTEXT (или что там) надо делать...
-
> MikeZ (28.02.08 15:17) [9]
> Наверное, потому, что это Edit и ему WM_SETTEXT (или что > там) надо делать...
Если про EDIT, то сойдет даже SendMessage with WM_CHAR and ^C. Но, для других нужен SendMessageW или еще что хужей.
-- Regards, LVT.
-
> Leonid Troyanovsky © (28.02.08 22:08) [10]
> сойдет даже SendMessage with WM_CHAR and ^C.
^V, sorry.
-- Regards, LVT.
-
Ну, SendKey таки работает. Но вот Control - не получается.
-
|