![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
windows.GetAsyncKeyState(vKey) [D7, WinXP]
nes © (2005-05-27 19:35:00)Здрасте, у меня стоит на форме таймер, который и должен узнать нажата ли клавиша,если поставить GetAsyncKeyState(65), то при нажатии на "а" срабатывает,а как мне тоже самое проделать, только с ",./"...вот...т.к. если ставить 40,42,43 то ничего не происходит...
nes (2005-05-28 13:38:00) [1]Спасибо=)
VMcL (2005-05-28 13:12:00) [2]
if GetAsyncKeyState(Byte(VkKeyScan('a'))) and $8000 <> 0 then
{Нажали A (англ.)};
if GetAsyncKeyState(Byte(VkKeyScan('A'))) and $8000 <> 0 then
{Нажали A (англ.)};
if GetAsyncKeyState(Ord('A')) and $8000 <> 0 then
{Нажали A (англ.)};
if GetAsyncKeyState(Byte(VkKeyScan('.'))) and $8000 <> 0 then
{Нажали точку};
if GetAsyncKeyState(Byte(VkKeyScan(','))) and $8000 <> 0 then
{Нажали запятую};
P.S. VkKeyScan учитывает раскладку клавиатуры.
nes (2005-05-28 11:48:00) [3]А как мне проделать тоже самое, только с ",./"?
Marser (2005-05-27 23:35:00) [4]
> Nes © (27.05.05 19:42) [2] [Новое
>сообщение][Ответить]
>Упс, так тоесть
> if GetAsyncKeyState(65)<>0 then
Это не гарантирует того, что клавиша нажата именно сейчас. Для уверенности нужно хотя бы убрать 1-й разряд(shr 1), который указывает на то, что ранее клавиша нажималась. Хотя для определения текущего статуса всё-таки лучше использовать GetKeyState, которая такой "памятью" не обладает.
Nes (2005-05-27 19:42:00) [5]Упс, так тоесть
if GetAsyncKeyState(65)<>0 then
Nes (2005-05-27 19:41:00) [6]ну дык,конечно же всё выглядит примерно так
if GetAsyncKeyState(65) then
showmessage('dqk A');