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

Вниз

Как отловить одновременное нажатие в проге клавиш Ctrl+Alt+S   Найти похожие ветки 

 
LordBTR   (2004-08-24 12:45) [0]

Как отловить одновременное нажатие в проге клавиш "Ctrl"+"Alt"+"S" ? Заранее спасибо.


 
Palladin ©   (2004-08-24 12:51) [1]

Ну например в TForm.OnKeyDown


 
LordBTR   (2004-08-24 13:09) [2]

Ну а конкретно - ОДНОВРЕМЕННОЕ как?
if (key=83) and (shift = [ssCtrl]) and (shift = [ssAlt]) then
не работает, т.к. shift получается либо [ssCtrl], либо [ssAlt], а одновременно то как?


 
Palladin ©   (2004-08-24 13:16) [3]

Shift это множество

if (key=83) and ([ssCtrl,ssShift]<=Shift) then


 
46_55_41_44 ©   (2004-08-24 13:20) [4]

> Palladin ©   (24.08.04 13:16) [3]

В этом случае и Shift будет работать...

if (key = 83) and (Shift = [ssCtrl, ssAlt]) then
...


 
Palladin ©   (2004-08-24 13:22) [5]

перепутал...


 
LordBTR   (2004-08-24 13:23) [6]

if (key=83) and ([ssCtrl,ssShift]<=Shift) then
при нажатии любой клавиши в комбинации с ctrl+alt+... срабатывает. Что не так?


 
Юрий Зотов ©   (2004-08-24 13:27) [7]

В таких случаях простой и компактный код дает использование пересечения множеств:

... and (Shift * [ssCtrl, ssAlt] = [ssCtrl, ssAlt]) ...


 
46_55_41_44 ©   (2004-08-24 13:33) [8]

if (key = 83) and (Shift = [ssCtrl, ssAlt]) then
попробуй так!


 
wicked ©   (2004-08-24 13:33) [9]


>  and (Shift * [ssCtrl, ssAlt] = [ssCtrl, ssAlt])

а "in" подойдет?...

по сабжу - сделать Action с таким shortcut"ом...


 
KSergey ©   (2004-08-24 13:44) [10]

> [7] Юрий Зотов ©   (24.08.04 13:27)
> В таких случаях простой и компактный код дает использование
> пересечения множеств:
>
> ... and (Shift * [ssCtrl, ssAlt] = [ssCtrl, ssAlt]) ...

Да, но на сколько я понимаю тогда и при нажатии еще и Shift это даст TRUE, что, вероятно, не соответствует задаче...


 
Юрий Зотов ©   (2004-08-24 13:51) [11]

> wicked ©   (24.08.04 13:33) [9]

in проверяет вхождение элемента, а не подмножества.

> 46_55_41_44 ©   (24.08.04 13:33) [8]
> KSergey ©   (24.08.04 13:44) [10]

Зависит от задачи (надо ли ловить строго [ssCtrl, ssAlt], или можно в сочетании еще с чем-то).


 
NAlexey ©   (2004-08-24 13:53) [12]

(GetAsyncKeyState(...) < 0) and ((GetAsyncKeyState(VK_LCONTROL) < 0) or (GetAsyncKeyState(VK_RCONTROL) < 0) and ((GetAsyncKeyState(VK_LMENU) < 0)  or (GetAsyncKeyState(VK_RMENU) < 0))


 
LordBTR   (2004-08-24 14:03) [13]

Ок. Всем спасибо. Вариант:
if (key = 83) and (Shift = [ssCtrl, ssAlt]) then
работает.


 
Dimka-gl ©   (2004-08-24 15:31) [14]

а как аналогичное провернуть не в своей программе. Через hooks по-моему только по одной клавише ловится, либо клавиша + alt



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

Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.192 c
14-1093272573
Копир
2004-08-23 18:49
2004.09.12
Лукашенку уговорили. Теперь он будет спать с "идеей".


1-1093228404
Poluprovodnik
2004-08-23 06:33
2004.09.12
ListBox


14-1093297658
Akha
2004-08-24 01:47
2004.09.12
Задачка о спичках навеяла...


1-1093502344
*Pavel
2004-08-26 10:39
2004.09.12
Скрипты


1-1092845927
Maxim____
2004-08-18 20:18
2004.09.12
RTE 204





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