Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.18;
Скачать: CL | DM;

Вниз

Как в чужом окне нажать комбинацию Ctrl-P   Найти похожие ветки 

 
Grademax   (2008-02-26 06:14) [0]

Существует чужое окно. Необходимо из своего приложения нажать в чужом окне комбинацию Ctrl-P. Пробовал через PostMessage, но как сообщить параметру "Кеу" что нажата именно комбинация (Ctrl-P) я не знаю.

Key:=Byte("P"); {??? Куда Ctrl привязать ???}
PostMessage(Handle, WM_KEYDOWN, Key, 0);


 
Rouse_ ©   (2008-02-27 09:48) [1]

Через keybd_event пробуй... Только окно активным сделать не забудь.


 
Grademax   (2008-02-28 10:48) [2]

Проблема как раз в том, что фокус менять нельзя, даже кратковременно!


 
Leonid Troyanovsky ©   (2008-02-28 11:36) [3]


> Grademax   (28.02.08 10:48) [2]

> Проблема как раз в том, что фокус менять нельзя, даже кратковременно!

Попробуй найти WM_COMMAND, соответствующее этому акселератору.
См., например, как потрошить главное меню Notepad.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-02-28 12:18) [4]


> Leonid Troyanovsky ©   (28.02.08 11:36) [3]

> См., например, как потрошить главное меню Notepad.

http://groups.google.com/group/fido7.ru.delphi/msg/925bebee0309bec9

--
Regards, LVT.


 
MikeZ   (2008-02-28 13:11) [5]

Все аналогично. Почти :)


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;


 
MikeZ   (2008-02-28 13:12) [6]

Пардон:

begin
SendMessage(H, WM_KEYDOWN, VK_CONTROL, 0);
SendKey(H, Ord("P")); // <--------
SendMessage(H, WM_KEYUP, VK_CONTROL, 0);
end;


 
Leonid Troyanovsky ©   (2008-02-28 13:56) [7]


> MikeZ   (28.02.08 13:11) [5]

> Все аналогично. Почти :)

Ну, и попробуй послать, скажем, Ctrl+V в EDIT Notepad.

--
Regards, LVT.


 
MikeZ   (2008-02-28 14:58) [8]

"Да, не выходит, мастер, каменный цветок" :(
Значит, не везде этот способ работает - я его из свой программы выдрал, значит, всё же есть ситуации, где он прокатывает.


 
MikeZ   (2008-02-28 15:17) [9]

Наверное, потому, что это Edit и ему WM_SETTEXT (или что там) надо делать...


 
Leonid Troyanovsky ©   (2008-02-28 22:08) [10]


> MikeZ   (28.02.08 15:17) [9]

> Наверное, потому, что это Edit и ему WM_SETTEXT (или что
> там) надо делать...

Если про EDIT, то сойдет даже SendMessage with WM_CHAR and ^C.
Но, для других нужен SendMessageW или еще что хужей.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2008-02-28 22:19) [11]


> Leonid Troyanovsky ©   (28.02.08 22:08) [10]

> сойдет даже SendMessage with WM_CHAR and  ^C.

^V, sorry.

--
Regards, LVT.


 
MikeZ   (2008-02-28 22:38) [12]

Ну, SendKey таки работает. Но вот Control - не получается.


 
Leonid Troyanovsky ©   (2008-02-29 16:02) [13]


> MikeZ   (28.02.08 22:38) [12]

> Ну, SendKey таки работает. Но вот Control - не получается.

Некоторые приложения обращают внимание на состояние
клавиатуры в момент прихода WM_KEYDOWN/UP|CHAR.

Т.е., иногда может помочь примерно такое
http://groups.google.com/group/fido7.ru.delphi.chainik/msg/e8115e50b604ca90?dmode=source&output=gplain
Кодировка KOI8-R

А, в общем-то, для неактивных окон существует слишком
большой произвол.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2009.01.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
2-1228307698
NEWSER
2008-12-03 15:34
2009.01.18
Как в диалоге выбора каталога открыть последний выбранный?


2-1228154721
Макс123
2008-12-01 21:05
2009.01.18
Прокрутка картинки


4-1204111796
POP
2008-02-27 14:29
2009.01.18
Как узнать скорость USB - COM порта?


2-1228698109
S
2008-12-08 04:01
2009.01.18
IBEvents в DLL


2-1228464468
1234567
2008-12-05 11:07
2009.01.18
MB_ICONINFORMATION