![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как опросить клавиотуру? [D7, Win95/98, WinXP]
userrrrr © (2005-09-28 19:36:00)Как можно програмно опросить состояние клавиатуры?
типа как в Паскале readkey
GanibalLector (2005-10-03 01:52:00) [1]
Когда функция возвращает значение, каждый элемент массива, указанного параметром lpKeyState содержит данные о состоянии виртуальной клавиши. Если старший бит равен 1, клавиша нажата; иначе она не отпущена. Если младший бит равен 1, клавиша переключилась. Клавиша, такая как CAPS LOCK, переключается, если она является включенной. Клавиша выключена и не переключает, если младший бит равен 0. Когда клавиша переключается, индикатор переключения клавиши на клавиатуре (если он есть) должен быть включен, и отключен, когда клавиша не переключается.
Чтобы извлекать информацию состояния для отдельной клавиши, используйте функцию GetKeyState.
Что такое байт знаешь? А что такое бит???
З.Ы. Небольшая подсказка...$80 это 10000000h т.е. старший бит. Еще вопросы будут???
userrrrr (2005-10-02 21:38:00) [2]а по подробнее
NightLord (2005-10-02 21:29:00) [3]Chr and Ord
userrrrr (2005-10-02 21:23:00) [4]что такое $80?
userrrrr (2005-09-30 19:25:00) [5]я так понял X[27] это и есть esc а что тогда $80 а как узнать какой номер у какой кнопки
GanibalLector (2005-09-30 02:19:00) [6]2 userrrrr (29.09.05 20:22) [8]
Это для клавишы Esc.
function ReadKeyEsc:Boolean;
var X:TKeyboardState;
begin
Result:=False;
GetKeyboardState(X);
if (X[27] and $80)>0 then Result:=True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if ReadKeyEsc then
begin
Windows.Beep(800,200);
Caption:='Дождались';
Timer1.Enabled:=False;
Timer1.Destroy;
end else
Caption:='Ждем-с';
end;
userrrrr (2005-09-29 20:22:00) [7]че то не понял
мы ждем нажатия определенной клавиши каждые 100 мс опрашиваем клавиатуру и сверяем результат с тем что мы хотим получить как это зделать
GuAV (2005-09-29 14:47:00) [8]Для консольных прилжений можно испльзовать
function readkey: Char;
var IR: TInputRecord; N: DWORD;
begin
ReadConsoleInput(GetStdHandle(STD_INPUT_HANDLE), IR, 1, N);
with IR.Event.KeyEvent do
begin
if bKeyDown then
Result := IR.Event.KeyEvent.AsciiChar
else
Result := #0;
end;
end;
GanibalLector (2005-09-29 01:21:00) [9]Вероятно так :
function ReadKey:Boolean;
var X:TKeyboardState;
I:Integer;
begin
Result:=False;
GetKeyboardState(X);
for I:=0 to $FF do
if (X[I] and $80)>0 then
begin
Result:=True;
Break;
end;
end;
Кефир87 (2005-09-29 00:55:00) [10]RTFM!
userrrrr (2005-09-28 22:16:00) [11]а здесь не написать
MSDN (2005-09-28 21:58:00) [12]См. MSDN
userrrrr (2005-09-28 21:46:00) [13]а как это работает какие переменные (тип)
begin...end (2005-09-28 19:39:00) [14]GetKeyboardState ?