Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.138.204.208] |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
так это не будет работать т.к. для RegisterHotKey надо использовать MOD_ALT, MOD_CONTROL, MOD_SHIFT, а не HOTKEYF_ALT, HOTKEYF_CONTROL, HOTKEYF_SHIFT - у них и значения разные (т.е. MOD_CONTROL=4, а HOTKEYF_CONTROL=$02)
|
Сообщ.
#17
,
|
|
|
ИМХО, надо первым параметром передавать хэндл окна, на которое клеится хоткей Как оно вообще работает - удивляюсь 0 не катит, я писал в одной своей проге Form1.Handle - и все пахало, а вот как расшифровывал модифер - не скажу, т.к. исходники навернулись...
|
Сообщ.
#18
,
|
|||||
|
Ну почему же, если в качестве дескриптора окна передаётся 0, то сообщение будет ассоциировано с данным потоком и ловить его нужно в цикле обработки сообщений. 2 _8989 пиши примерно следующее
|
Сообщ.
#19
,
|
|
|
В общем, я нашел код для этого. Реально рабочий. Только там нужОн VCL. Ставим HK: THotKey и во время загрузки проги загружаем в нее в текстовом виде хоткей:
HK.HotKey:=TextToShortCut(Inif.ReadString('Main', 'Hotkey', '')); Ну, у меня из INI читается, но суть та же самая. Потом: modif:=0; if (hkCtrl in HK.Modifiers) then modif:=modif+MOD_CONTROL; if (hkAlt in HK.Modifiers) then modif:=modif+MOD_ALT; if (hkShift in HK.Modifiers) then modif:=modif+MOD_SHIFT; ShortCutToKey(HK.HotKey, K, SS); Итак, у нас в modif - модификаторы, а в K - вирт. код клавиши, SS нас не интересует, хотя можно прямо из него тянуть модификаторы (у меня из компонента). Теперь: RegisterHotKey(Form1.Handle, $8760, Modif, k); Опять же, номер клавиши из рабочей проги. Меня немного смущает двойное преобразование из текста в ShortCut и из него - в VK и модификатор, возможно, можно и проще. Но мне в проге нужен был сам компонент THotKey... |
Сообщ.
#20
,
|
|
|
ВСЕМ огромное спасибо за помощь! Особенную благодарность хочу выразить rhf. Еще раз - Сенкс!
|
Сообщ.
#21
,
|
|
|
2_8989
Так подними ему рейтинг-то, раз тебе помогли его ответы. |
Сообщ.
#22
,
|
|
|
Как?
|
Сообщ.
#23
,
|
|
|
А.. ну ты же гость. Сначала зарегится как минимум надо.
|
Сообщ.
#24
,
|
|
|
как делавл я
[code] ....................... Procedure Hot(var Message:TMessage);message WM_HOTKEY; .......... RegisterHotKey(Wnd.Handle,0,0,VK_TAB); ............... Procedure Twnd1.Hot; Begin .............. end; |