1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| uses JwaWinUser;
procedure TForm1.FormCreate(Sender: TObject);
var
RID: TRawInputDevice;
begin
//Messages clavier
RID.usUsagePage := $01;
RID.usUsage := $06;
RID.dwFlags := RIDEV_INPUTSINK;
RID.hwndTarget := Handle;
RegisterRawInputDevices(@RID, 1, SizeOf(TRawInputDevice));
end;
procedure TForm1.WndProc(var Message: TMessage);
var
Data :PRawInput;
Size :dword;
begin
if Message.Msg = WM_INPUT then
begin
GetRawInputData(Message.LParam, RID_INPUT, nil, Size, SizeOf(TRawInputHeader));
GetMem(Data, Size);
try
if GetRawInputData(Message.LParam, RID_INPUT, Data, Size, SizeOf(TRawInputHeader)) = Size then
begin
Memo1.Lines.Add(Format('Msg:%d, VK:%d', [Data.keyboard.Message, Data.keyboard.VKey]));
Message.Result := 0;
end;
finally
FreeMem(Data);
end;
end
else inherited;
end; |
Partager