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

Вниз

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

 
anod   (2002-04-28 00:13) [0]

Тут возникла пара вопросов:
Нужно отлавливать 5 сочетаний клавиш, устанавливыемых пользователем.

1. Можно ли с помощью RegisterHotKey устанавливать сразу несколько HOOk"ов
2. Как мне из THotKey засунуть сочетание в формат типа string (чтоб сохранять настройки), а из него в RegisterHotKey.
Я так понимаю надо извлечь из THotKey 1 часть сочетания (ctrl, alt , shift ) и 2часть (F1..F12,A..Z,0..1);
Я так себе представляю:

RegisterHotKey(Form1.handle, код второй клавиши , MOD_CONTROL, код второй клавиши);


 
Song   (2002-04-28 10:03) [1]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1019906284&n=0


 
anod   (2002-04-28 11:19) [2]

2Song
Спасибо, это впринцыпе и в хелпе было написано, просто уточнить.

А что насчет:


> Как мне из THotKey засунуть сочетание в формат типа string
> (чтоб сохранять настройки), а из него в RegisterHotKey.



 
anod   (2002-04-28 11:21) [3]

Упс, в принципе.


 
Song   (2002-04-28 15:09) [4]

ShortCut() Вам поможет


 
anod   (2002-04-28 19:14) [5]

При загрузке деляю так:

for i:= 1 to 5 do hotkeys[i]:=reg.ReadString("hotkey"+IntTosTr(i));
if reg.ReadBool("usehkey") then begin
UseHKeyCB.Checked:=true;
for i:= 1 to 5 do begin
ShortCutToKey(TextToShortCut(hotkeys[i]),key,shState);
if ssAlt in shState then RegisterHotKey(Form1.Handle,GlobalAddAtom(PChar("dlhotkey"+IntTostr(i))),MOD_ALT,key);
if ssCtrl in shState then RegisterHotKey(Form1.Handle,GlobalAddAtom(PChar("dlhotkey"+IntTostr(i))),MOD_CONTROL,key);
end;


А сообщение отсележиваю так:

procedure TForm1.WMHotKey (var Msg : TWMHotKey);
var i:integer; h:HWND;
begin
for i:= 1 to 5 do
if ShortCutToText(Msg.HotKey) = hotkeys[i] then
begin
if ShellExecute(h, "explore", PCHAR(d[i]), nil, nil, SW_SHOW) < 32 then
ShowMessage("


 
Song   (2002-04-28 21:54) [6]

А что такое var Msg : TWMHotKey ???

procedure TForm1.WMHotKey(Var Msg:TMessage);
Begin
For i:= 1 to 5 Do IF ShortCutToText(Msg.LParamHi)=hotkeys[i] then ...


 
фтщв   (2002-04-29 00:19) [7]

Спасибо, я уже нашел.

Это я выдрал из какого-то примера. Там это работало.


 
anod   (2002-04-29 00:20) [8]

фтщв - anod



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

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

Наверх




Память: 0.45 MB
Время: 0.007 c
8-88965
[NIKEL]
2002-02-16 16:13
2002.06.27
Можно ли разбить BMP так


1-88891
Akni
2002-06-14 00:48
2002.06.27
Свойства компонента


1-88822
ivlex
2002-06-16 09:49
2002.06.27
О горячих клавишах


1-88922
ZIP
2002-06-15 02:10
2002.06.27
Путь к узлу в TTreeView


3-88756
Jaroshik
2002-06-04 13:01
2002.06.27
Отчеты QuickReport





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