Форум: "Начинающим";
Текущий архив: 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.042 c