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

Вниз

Hot Keys   Найти похожие ветки 

 
Katrin   (2003-10-06 11:57) [0]

Возникла проблема - у меня есть приложение, о котором я знаю только то, какими горячими клавишами оно управляется, ни коммандной строки, ничего. необходимо включить его функциональность в мой проект. Подскажите, каким образом можно управлять приложением по hot keys?


 
Игорь Шевченко   (2003-10-06 14:08) [1]

keydb_event, SendInput


 
Katrin   (2003-10-06 14:26) [2]

Я очень мало имела дело с WinAPI, вы бы не могли привести пример того, как послать например Alt-F1 чужому приложению. Буду оч благодарна


 
Игорь Шевченко   (2003-10-06 14:45) [3]

Например, так:
procedure TForm1.Button1Click(Sender: TObject);
begin
keybd_event(VK_MENU, 0, 0, 0);
keybd_event(VK_F1, 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
end;


Это будет равносильно тому, что на клавиатуре нажата комбинация клавиш Alt+F1


 
Katrin   (2003-10-06 15:12) [4]

На это сообщение отреагируют все активные приложения. А как послать определенному окну? Причем желательно чтобы было это окно невидимым для юзера или хотя бы свернутым.
А в вашем примере нажатие Alt это где описано


 
Игорь Шевченко   (2003-10-06 15:36) [5]

Если приложение зарегистрировало горячую клавишу, то все зависимости от того, активно оно или нет, оно это нажатие получит. Например, Ctrl+Shift+Esc. Боюсь, что мы с вами по-разному понимаем понятие "горячая клавиша".

> А как послать определенному окну? Причем желательно чтобы
> было это окно невидимым для юзера или хотя бы свернутым.

Насколько я помню, в вопросе было написано про некое приложение, о котором ничего не известно ? Откуда взялись окна, да еще и невидимые ? :)


> А в вашем примере нажатие Alt это где описано

VK_MENU это и есть клавиша Alt


 
Katrin   (2003-10-06 15:53) [6]

Активное приложение - ну как, если у меня открыто два IE, я нажму F1 то отреагирует только активное приложение. Может быть мы действительно по-разному понимаем hot key.
Окна взялись из того, что приложение-то я буду запускать (как называется файл я знаю :)). Очень бы хотелось скрыть само окно приложения от пользователя и показывать ему только выдаваемые по нажатию горячей клавиши диалоги открытия, сохранения файлов и т.п. Но это не так важно - пусть даже будет свернутым. Однако комбинация клавиш, типа Alt-F1 может в принципе активизировать и другое приложение, а мне надо чтобы она адресовалась только открытому мною приложению.


 
Игорь Шевченко   (2003-10-06 16:12) [7]

Если вам известно имя и класс нужного окна вашего приложения, то будь оно свернутым или невидимым, можно найти его Hwnd и послать ему сообщения (WM_KEYDOWN, WM_KEYUP) функцией PostMessage.


 
Katrin   (2003-10-06 16:39) [8]

Большое спасибо
Если я не ошибаюсь, то PostMessage необходимо вызывать для одновременного нажатия Alt-F1 два раза


 
Игорь Шевченко   (2003-10-06 16:43) [9]

Katrin © (06.10.03 16:39)

Да, на каждую кнопку (Alt(VK_MENU) и F1(VK_F1)) по своему сообщению WM_KEYDOWN и по своему WM_KEYUP - итого четыре вызова


 
Katrin   (2003-10-06 16:54) [10]

ок, спасибо за помощь огромное



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

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

Наверх




Память: 0.46 MB
Время: 0.008 c
11-89796
chum
2003-03-20 19:45
2003.11.27
Проблема с модальной формой


1-89900
Bokus
2003-11-15 10:00
2003.11.27
Криптография


3-89779
}|{yk
2003-11-06 17:19
2003.11.27
Calculated-поля и фильтр


1-89892
Talla2k
2003-11-15 12:29
2003.11.27
MDI и Child


4-90156
bolegator
2003-10-05 12:18
2003.11.27
Wheel2Key





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский