Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Вниз

Как в чужом окне нажать комбинацию 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2009.01.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1227219455
{RASkov}
2008-11-21 01:17
2009.01.18
Диспетчер устройств


2-1228206229
Vitaliy_____
2008-12-02 11:23
2009.01.18
TList и много объектов


15-1227627498
Trinimak
2008-11-25 18:38
2009.01.18
data diagram


2-1228221610
givi
2008-12-02 15:40
2009.01.18
Имя ПК


2-1228210454
timekiller
2008-12-02 12:34
2009.01.18
TComboBox под колесиком .. мыши





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский