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
| uses JwaWinUser;
procedure TF_capnum.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 TF_capnum.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
if Data.keyboard.VKey in [VK_CAPITAL, VK_NUMLOCK] then
VoirMajNumLockEtat;
Message.Result := 0;
end;
finally
FreeMem(Data);
end;
end
else inherited;
end; |