Главная страница
    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.038 c
1-1093438190
Zilog
2004-08-25 16:49
2004.09.12
Ананлог SpinEdit для чисел с плавающей точкой


1-1093430215
Реактор
2004-08-25 14:36
2004.09.12
Приритет программы.


1-1093240722
[BAD]Angel
2004-08-23 09:58
2004.09.12
Как вывести текст на рабочий стол чтобы он не затирался окнами?


4-1091280137
Sulimxar
2004-07-31 17:22
2004.09.12
Приоритеты


4-1090070812
BVV
2004-07-17 17:26
2004.09.12
Управление чюжим приложением





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