Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как опросить клавиотуру? [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 ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо