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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| procedure TFTestRawInput.HandleWM_INPUTMessage (var Msg : TMessage);
var
i,l: Integer;
RI: PRAWINPUT;
dwSize: UINT;
lpb: PBYTE;
DataSize: DWORD;
HID_DATA:array [0..15] of DWORD;
P:PByte;
tmpX,tmpY: Integer;
pData: Pointer;
devName: PChar;
deviceName : string;
NameSize: Integer;
DevInfo: TRidDeviceInfo;
KeyboardInfo: TRidDeviceInfoKeyboard;
RIKey: PRAWINPUT;
strOut: String;
strListName : TStringList;
begin
GetRawInputData(HRAWINPUT(Msg.LParam), RID_INPUT, nil, dwSize, SizeOf(TRAWINPUTHEADER));
if dwSize = 0 then Exit;
DataSize := SizeOf(BYTE) * dwSize;
GetMem(lpb,DataSize);
try
GetRawInputData(HRAWINPUT(Msg.LParam), RID_INPUT, lpb, dwSize, SizeOf(TRAWINPUTHEADER));
RI := PRAWINPUT(lpb);
// clavier
if RI.header.dwType = RIM_TYPEKEYBOARD then
begin
try
// ne réagir que sur un KEYDOWN
if (RI.keyboard.Message = WM_KEYDOWN) then
begin
GetRawInputDeviceInfoA(RI.header.hDevice, RIDI_DEVICENAME, nil, dwSize);
GetMem(devName,dwSize);
GetRawInputDeviceInfoA(RI.header.hDevice, RIDI_DEVICENAME, Pointer(devName), dwSize);
deviceName := copy(StrPas(devName), 5);
strListName := TStringList.Create;
Split('#', deviceName, strListName);
if strListName[2] = "#le protocole de mon périphérique#" then
begin
//////// saisie := ''; // j'aimerais enregistrer ici la saisie de cet évènement !!
Msg.Result := 0;
if RI.keyboard.VKey = 13 then
begin
Application.ProcessMessages;
saisie := '';
end;
end else
begin
Msg.Result := 1232;
end;
end;
except on e: exception do
showmessage('erreur : '+#13+e.message);
end;
end;
finally
FreeMem(lpb,DataSize);
FreeMem(devName,dwSize);
end;
end; |
Partager