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

Вниз

как отловить комбинацию   Найти похожие ветки 

 
Novichek   (2002-10-22 12:52) [0]

Помогите пожалуйста отловить комбинацию [Contrl]+[Shift]и при ее нажатии вывести сообщение? пробовал так, но не помогает:

procedure hotykey(var msg:TMessage); message WM_HOTKEY;
...
var
Form1: TForm1;
id:Integer;
...
procedure TForm1.hotykey(var msg:TMessage);
begin
if (msg.LParamLo=mod_shift) and (msg.LParamHi=MOD_CONTROL) then
begin
showmessage("uuuuuuuuuu");
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
id:=GlobalAddAtom("hotkey");
RegisterHotKey(handle,id,mod_shift,MOD_CONTROL);
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
UnRegisterHotKey(handle,id);
end;


 
Крот   (2002-10-23 08:51) [1]

Используете событие OnKeyDown таким образом:


procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Shift = [ssShift, ssCtrl] then
ShowMessage("Ура, получилось!");
end;

Удачи!


 
Novichek   (2002-10-23 18:16) [2]

а как эту комбинацию засунуть в горячие клавиши?


 
Novichek   (2002-10-26 00:15) [3]

а как эту комбинацию засунуть в горячие клавиши?


 
serd_hhc   (2002-10-26 03:29) [4]

while true do
begin
if (GetAsyncKeyState(VK_SHIFT)<>0) and
(GetAsyncKeyState(VK_[Кажется CONTROL])<>0) then
ShowMessage("Urrraaaa....");
Sleep(150);
end;


Думаю разберёшься...


 
Novichek   (2002-10-28 14:18) [5]

да, но это работает только если на это условие програмно перейти, а как эту комбинацию засунуть в горячие клавиши?


 
Novichek   (2002-11-08 20:04) [6]

>>Крот © (23.10.02 08:51)
так не получилось

>> serd_hhc © (26.10.02 03:29)
это работает только если специально на это условие выйти.

может у кого еще есть какие идеи как это сделать?


 
Song   (2002-11-08 21:11) [7]

Ну дак и забабахай это условие в обработчик WM_HOTKEY


 
Novichek   (2002-11-11 02:25) [8]

в смысле? а как? обьясни мне, тупому, пожалуйста!!!!!


 
Song   (2002-11-11 09:09) [9]

procedure TForm1.hotykey(var msg:TMessage);
begin
inherited;
if (GetAsyncKeyState(VK_SHIFT)<>0) and
(GetAsyncKeyState(VK_[Кажется CONTROL])<>0) then
ShowMessage("Urrraaaa....");
end;


 
Novichek   (2002-11-11 18:45) [10]

Song © (11.11.02 09:09)
не получается что-то... :(((


 
Novichek   (2002-11-11 18:55) [11]

Song © (11.11.02 09:09)
а ты сам хоть пробовал это?
на это условие программа выходит только после того как были нажаты какие либо другие зарегестрированные клавиши.


 
Novichek   (2002-11-11 20:25) [12]

Song ©
в предложенном варианте: Song © (11.11.02 09:09), есть один большой недостаток, а именно если нажать сначала или контрл или шифт, потом его отпустить, после этого нажать любые клавиши, а потом нажать шифт или контрл(в зависимости от того что было нажато первым) , то срабатывает условие и выпадает сообщение об этом, хотя контрл и шифт были нажаты не одновременно и между ними были нажаты еще и другие клавиши.


 
Song   (2002-11-11 20:57) [13]

Не пробовал. Это нужно Вам, а не мне.
Попробуйте использовать GetKeyState()


 
Novichek   (2002-11-11 21:11) [14]

глюка уже нет, но все же, как мне это все запихнуть в горячие клавиши?


 
Eugen Honeker   (2002-11-11 21:19) [15]

попробуй вот такой вариант

RegisterHotKey(handle, id, MOD_CONTROL or MOD_SHIFT, 0)


 
Novichek   (2002-11-12 18:33) [16]

не получается.
а вот если вместо 0 поставить код клавиши, то получается комбинация contrl+shift+клавиша


 
Novichek   (2002-11-12 19:06) [17]

спасибо всем, уже нашел.

RegisterHotKey(handle,id,(mod_CONTROL or mod_shift),vk_control);
RegisterHotKey(handle,id2,(mod_CONTROL or mod_shift),vk_shift);



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

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

Наверх





Память: 0.59 MB
Время: 0.045 c
14-86120
iZEN
2002-12-05 15:33
2002.12.26
Как запустить индикатор клавиатурной раскладки в WinXP?


3-85848
samsam
2002-12-05 17:05
2002.12.26
Востановление удаленной записи


4-86219
Novichek
2002-10-22 12:52
2002.12.26
как отловить комбинацию


14-86174
Aristarh
2002-12-04 22:47
2002.12.26
Unreal 2003


1-86020
Новичок
2002-12-16 15:08
2002.12.26
Ребята помогите! Срочно!!! Горю по курсовой!!!





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