Réponse acceptée !
N.B. Par la suite le code en rouge est sensé être déjà présent !!!
Tu crées un nouveau projet., (ou tu utilises le tien, ATTENTION, si c'est le cas ce n'est pas Form1 ou TForm1 que tu auras !!)
Tu ajoutes dans la section interface de ta fiche principale sous le code existant la variable du hook et la definition de la fonction d'interception des messages clavier (code en noir).
var
Form1: TForm1;
HookClavier : HHook ;
function HookClavierCallBack ( Code : Integer
; WParam : Word
; LParam : LongInt
) : LongInt ; stdcall ;
implementation
Tu ajoutes dans la section implementation le code de la structure d'information clavier et la fonction d'interception des messages clavier (code en noir)
implementation
type
// Structure pour recueillir les informations clavier
PHookClavierInfo = ^THookClavierInfo ;
THookClavierInfo = record
vkCode : DWORD ;
scanCode : DWORD ;
flags : DWORD ;
time : DWORD ;
dwExtraInfo : PULONG ;
end ;
// La fonction d'interception du hokk clavier
function HookClavierCallBack ( Code : Integer
; WParam : Word
; LParam : LongInt
) : LongInt ; stdcall ;
var
Infos : PHookClavierInfo ;
begin
Result := 0 ; // =0 pas d'inhibition des touches
if ( Code = HC_ACTION ) then
begin
Infos := PHookClavierInfo( LParam );
case WParam of
WM_KEYDOWN : // Interception des touches appuyées
begin
case ( Infos^.vkCode ) of
VK_LWIN ,
VK_RWIN : Result := 1 ; // =1 inhibition des touches concernées
end ;
end ;
end ;
end ;
end ;
Tu ajoutes à ta fiche les deux evenements suivant : OnCreate et OnDestroy (Se positionner sur la fiche, F11 editeur de propriété, sélection onglet evenement et doubleclick sur zone saisie du Oncreate puis du OnDestroy)
Delphi a alors créer le code associé aux evenements. Dans chacune de ces procedures tu rajoutes le code fourni (en noir)
// Installation du hook clavier
procedure TForm1.FormCreate(Sender: TObject);
const
WH_KEYBOARD_LL = 13 ; // low level keyboard, non défini d'origine dans l'unité Windows
begin HookClavier := SetWindowsHookEx( WH_KEYBOARD_LL
, @HookClavierCallBack
, HInstance
, 0
) ;
end;
// Retrait du hook clavier
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnHookWindowsHookEx( HookClavier ) ;
end;
Tu compiles ton projet, et hop c'est tout bon.
Cordialement.