Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.03;
Скачать: CL | DM;

Вниз

GetAsyncKeyState   Найти похожие ветки 

 
mox ©   (2003-06-19 22:56) [0]


Как можно по таймеру, с помощью GetAsyncKeyState, проверять через
определенное время, какая нажата клавиша. Пробовал, но у меня определяется
только первая по счету нажатая клавиша.


 
icWasya ©   (2003-06-20 09:56) [1]



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Timer1: TTimer;
LabelQ: TLabel;
LabelW: TLabel;
LabelE: TLabel;
LabelR: TLabel;
LabelT: TLabel;
LabelY: TLabel;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
const
S_Q_Up = "кнопка отпущена";
S_Q_Dn = "кнопка нажата";
S_Dn = "кнопка давно нажата";
S_Up = "кнопка давно отпущена";
S_Q = "учи матчасть";


procedure KeyState(L:TLabel;K:Char);
var W:Word;
S:String;
begin

W:=GetAsyncKeyState(Ord(K));

if W = $8001 then S := S_Q_Dn else
if W = $0001 then S := S_Q_Up else
if W = $8000 then S := S_Dn else
if W = $0000 then S := S_Up else
S := S_Q ;

L.Caption:=Format("%s %s %.4x",[S, K, W] );


end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
KeyState(LabelQ,"Q");
KeyState(LabelW,"W");
KeyState(LabelE,"E");
KeyState(LabelR,"R");
KeyState(LabelT,"T");
KeyState(LabelY,"Y");
end;

end.



object Form1: TForm1
Left = 421
Top = 278
Width = 337
Height = 224
Caption = "Test KeyState"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object LabelQ: TLabel
Left = 72
Top = 32
Width = 34
Height = 13
Caption = "LabelQ"
end
object LabelW: TLabel
Left = 72
Top = 56
Width = 37
Height = 13
Caption = "LabelW"
end
object LabelE: TLabel
Left = 72
Top = 80
Width = 33
Height = 13
Caption = "LabelE"
end
object LabelR: TLabel
Left = 72
Top = 104
Width = 34
Height = 13
Caption = "LabelR"
end
object LabelT: TLabel
Left = 72
Top = 128
Width = 33
Height = 13
Caption = "LabelT"
end
object LabelY: TLabel
Left = 72
Top = 152
Width = 33
Height = 13
Caption = "LabelY"
end
object Timer1: TTimer
OnTimer = Timer1Timer
Left = 160
Top = 40
end
end



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

Текущий архив: 2003.07.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
1-7392
Mihey
2003-06-23 00:48
2003.07.03
Сделать OnMouseEnter и OnMouseLeave для компонента...


14-7639
Rasa
2003-06-16 02:16
2003.07.03
Скроллинг файлов на экране вверх вниз


7-7729
mobilzero
2003-04-21 11:02
2003.07.03
Как научить программу на АСМ работать под виндами?


1-7405
ss300
2003-06-23 07:28
2003.07.03
как узнать CD ROM?


14-7689
paxer
2003-06-14 15:54
2003.07.03
Что у нас случилось с Чернобылем?