koaiz
Messages postés49Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention 8 août 2009
-
13 avril 2005 à 12:33
Niki2001
Messages postés85Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention17 décembre 2005
-
13 juil. 2005 à 20:09
salut les Pro
Je suis sur un projet et j'arrive a cacher le bouton Demarrer de windows mais la touche windows du clavier me pose probleme en pet toujour ouvrir la bar de programme
y a t-il un moyen de bloquer cette touche (Seul) ou de cacher la barde programme ou la desactiver sans cacher la bar des taches
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 14 avril 2005 à 13:34
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;
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 13 avril 2005 à 16:31
Bon alors rapido :
Qu'est ce qu'il faut faire ? Un hoo (Non pas celui de Peter Pan..., celui de Bill Gates)
Comment ? Comme ça.
Ajout dans la section interface
var
Form1: TForm1;
HookClavier : HHook ;
function HookClavierCallBack ( Code : Integer
; WParam : Word
; LParam : LongInt
) : LongInt ; stdcall ;
Ajout dans la section 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 ;
// 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;
cs_MAsterC
Messages postés217Date d'inscriptionlundi 4 février 2002StatutMembreDernière intervention19 décembre 2012 13 avril 2005 à 16:41
Salut,
en faite si tu veux désactivé les tousches Windows de ton clavier voici les Constantes et leurs caractère ASCII.
Pour la touche Windows Gauche: VK_LWIN 91
Pour la touche Windows Droite: VK_RWIN 92
Donce voici un petit exemple...
*On peut supprimer le traitement par défault d'un caractère en affectant la valeur zéro au paramètre Key.
Dans l'événement OnKeyPress possède le paramètre Key de type Char qui permet de tester un caractère ASCII. Le paramètre Key spécifie le caractère représenté par la touche enfoncée et pas le code de touche virtuel Windows.
if key = VK_LWIN then
begin
key = 0;
end;
Voila, j'esprère que j'ai bien compris ta question et que ma réponse va t'aider.
Si l'exemple ne fonctionne pas, fait une recherche sur le site et tu trouvera quelques choses.
MAsterC
Vous n’avez pas trouvé la réponse que vous recherchez ?
koaiz
Messages postés49Date d'inscriptionsamedi 26 avril 2003StatutMembreDernière intervention 8 août 2009 14 avril 2005 à 12:07
Salut les Pro
Tous dabord merci de se soicier de mes problemes
pour la premiere reponce j'ai esseyer de l'utiliser sans succes !!!
je n'ai pas su comment utiliser la fonction je croit qu'elle demarre auto dans OnCreate.
si WhiteHippo peut donner plus d'explicationca sera pas de refus
pour la reponce de MAsterC lorsqu'on appuit sur une touche windows c'est Windows qui prent la prioriter donc pas de temps pour intercepter la frape avec KeyPreview
Pour la reponce de japee ca ne fonction pas. le menu demarrer marche toujours si ca desactive le boutton demarrer c'est la meme chose il marche toujours.
Niki2001
Messages postés85Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention17 décembre 20051 13 juil. 2005 à 20:09
Question pour WhiteHippo: ce code que tu as donné m'intéresse beaucoup et je voudrais bien savoir a quoi correspondent scancode, flags, time et dwExtraInfo. Si tu regarde ce message (toi ou un autre qui peut m'aider, d'ailleurs!)....