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

Вниз

Нажата ли клавиша вообше???   Найти похожие ветки 

 
Новочеркасский Волк ©   (2006-02-25 20:14) [0]

Здравствуйте. Подскажите пожалуйсто, как на языке Delphi будит звучать следующий код:
"если нажата клавиша Z то"
Причём нажата не при активной форме а вообше, то есть просто во время работы проги набрана в Блокноте или ещё где нибудь.
------------------------------------------
Заранее спасибо!!!
ЗАХОДИТЕ НА:  http://rost-on-don.net.ru/forumdisplay.php?f=28


 
Marser ©   (2006-02-25 21:54) [1]

Клавиатурный хук нужно использовать.
Ещё вариант - горячие клавиши - hotkeys.


 
Eraser ©   (2006-02-25 22:05) [2]


> Новочеркасский Волк ©   (25.02.06 20:14)

см. GetAsyncKeyState

> ЗАХОДИТЕ НА

спам - это плохо.


 
grisme ©   (2006-02-26 05:32) [3]


> Новочеркасский Волк ©   (25.02.06 20:14)


GetKeyState - возвротит значение типа Short(2 байта). Смотришь 15 бит - если 1, то нажата, иначе отпущена.

Допустим имеем переменную r (тип word):
r:=GetKeyState(Ord("Z"));
if (r and 32767)=32767 then {нажата} else {отпущена}

Все.


 
Новочеркасский Волк ©   (2006-02-26 11:35) [4]

Спасибо. Щас попробую!


 
Новочеркасский Волк ©   (2006-02-26 11:45) [5]

Ну вот сделал я вот так:

procedure TForm1.FormShow(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord("z"));
if (r and 32767)=32767 then
beep;
end;

Открыл Блокнот и набираю там z и ничего!!! Почему???


 
wal ©   (2006-02-26 13:02) [6]

А почему на FormShow?


 
evvcom ©   (2006-02-26 14:51) [7]


> if (r and 32767)=32767 then {нажата} else {отпущена}

И почему 32767?


 
grisme ©   (2006-02-26 15:02) [8]


> И почему 32767?

На 1 ошибся.. 32768, конечно...:)
Объясняю, 15й бит - положение клавиши:
исходное значение: Xxxxxxxx xxxxxxxx
32768                  : 10000000 00000000
AND                    :------------------------
если X=1, то мы получим, в итоге, 32768, если X=0 - соответственно 0! :)
Вас что булевской алгебре не учили? :)


 
Новочеркасский Волк ©   (2006-02-26 15:19) [9]

Ну а чем здесь не подходит FormShow. Хорошо. Заменил я на такой код:

procedure TForm1.Timer1Timer(Sender: TObject);
var
r: word;
begin
r:=GetKeyState(Ord("z"));
if (r and 32768)=32768 then
beep;
end;

И всё равно не работает. Что опять не так. Можете чтоб не париться сразу код вылажить. И как вот этот код клавиши 32768 получили тоже не понял. Подскажите пожалуйсто. Очень надо.
----------------------------------------------------
Заранее всем спасибо!!!
(А на мою тупость не обижайтесь. Я веть только учюсь.)


 
Джо ©   (2006-02-26 15:27) [10]

> [9] Новочеркасский Волк ©   (26.02.06 15:19)

Ord("Z")
(Верхний регистр)


 
grisme ©   (2006-02-26 15:30) [11]


> И как вот этот код клавиши 32768 получили тоже не понял.


32768 - это не код клавиши. За объяснением см. grisme ©   (26.02.06 15:02) [8] . Извини за непонятность объяснения - не умею я объяснять...:)


 
Grief ©   (2006-02-26 22:57) [12]

Если на пальцах объяснить, то эта функция возвращает для конкретной клавиши число, которое будучи переведенным в двоичную систему счисления представляет собой набор флагов, несущих определенную информацию о данной клавише. Не забивай голову всеми сразу. запомни, что 15-й бит - нажата клавиша (1) или отпущена (0).


 
Новочеркасский Волк ©   (2006-02-27 11:08) [13]

Огромное спасибо всем!!!. Всё работает!!!


 
Новочеркасский Волк ©   (2006-03-04 13:03) [14]

Всё это чюдесно. Но возник ещё вопрос как мне инициализировать нажатия таких клавиш как: ё, ю,б, э, х, ъ и цифр? Таким способом как описан выше не получается. Может вместо 32768 надо чтото другое подставлять или чтото другое? Подскажите.
------------------------------------------------------
Заранее огромное спасибо!!!


 
Новочеркасский Волк ©   (2006-03-04 16:21) [15]

Всё это чюдесно. Но возник ещё вопрос как мне инициализировать нажатия таких клавиш как: ё, ю,б, э, х, ъ и цифр? Таким способом как описан выше не получается. Может вместо 32768 надо чтото другое подставлять или чтото другое? Подскажите.
------------------------------------------------------
Заранее огромное спасибо!!!


 
Новочеркасский Волк ©   (2006-03-08 17:56) [16]

Всё это чюдесно. Но возник ещё вопрос как мне инициализировать нажатия таких клавиш как: ё, ю,б, э, х, ъ и цифр? Таким способом как описан выше не получается. Может вместо 32768 надо чтото другое подставлять или чтото другое? Подскажите.
------------------------------------------------------
Заранее огромное спасибо!!!


 
Virgo_Style ©   (2006-03-08 21:22) [17]

насколько я помню правила, принято для каждого нового вопроса заводить новую ветку, а спамить - не принято



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1140602850
denis24
2006-02-22 13:07
2006.03.26
перенос картинки из одного Timage в другой


15-1141280821
WondeRu
2006-03-02 09:27
2006.03.26
Text Art - кидайте сюда, что знаете интересного :)


15-1141643051
Kaban
2006-03-06 14:04
2006.03.26
Пиксел


3-1138806707
Serg2103
2006-02-01 18:11
2006.03.26
SCOPE_IDENTITY() не всегда корректно выполняется


4-1136211191
Человек
2006-01-02 17:13
2006.03.26
Hook клавиатуры





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