Главная страница
    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.005 c
1-88903
ki11er
2002-06-13 20:58
2002.06.27
Отладка Delphi-Приложений


3-88747
SJ_Love
2002-06-04 11:42
2002.06.27
Не могу разобраться с отчетом к БД


8-88962
nick_vstu
2002-01-23 03:03
2002.06.27
Помогите пожалуйста!


1-88910
vitek
2002-06-12 19:49
2002.06.27
КАК быть?


3-88766
Perec
2002-06-05 09:56
2002.06.27
Изменение наименования поля таблицы через системные таблыцы





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