Главная страница
    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.03 c
11-1080499633
nester
2004-03-28 22:47
2004.09.12
Как в рантайм у EditBox а добраться до свойства Options ?


1-1093412780
Jenek
2004-08-25 09:46
2004.09.12
alt+f4


4-1090939941
mpv
2004-07-27 18:52
2004.09.12
Время простоя


1-1093351076
AndrewK
2004-08-24 16:37
2004.09.12
Можно ли передавать класс?


14-1093507145
Baks
2004-08-26 11:59
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский