Menu Demarrer [Résolu]

Messages postés
49
Date d'inscription
samedi 26 avril 2003
Dernière intervention
8 août 2009
- - Dernière réponse : Niki2001
Messages postés
87
Date d'inscription
samedi 6 novembre 2004
Dernière intervention
17 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

plus on vie plus on apprend
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de WhiteHippo
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
0
Merci
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;

Cordialement.
Commenter la réponse de WhiteHippo
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
0
Merci
Oups tout le monde aura rectifier il s'agissait d'un HOOK pas d'un HOO .

Cordialement.
Commenter la réponse de WhiteHippo
Messages postés
223
Date d'inscription
lundi 4 février 2002
Dernière intervention
19 décembre 2012
0
Merci
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
Commenter la réponse de cs_MAsterC
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
0
Merci
Il y a une solution simple et radicale.



Désactivation de la touche démarrer :

SystemParametersInfo(SPI_SCREENSAVERRUNNING, Ord(True), nil, 0);



(Ré)Activation de la touche démarrer :

SystemParametersInfo(SPI_SCREENSAVERRUNNING, Ord(False), nil, 0);



Bonne prog'
Commenter la réponse de japee
Messages postés
49
Date d'inscription
samedi 26 avril 2003
Dernière intervention
8 août 2009
0
Merci
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'explication ca 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.

plus on vie plus on apprend
Commenter la réponse de koaiz
Messages postés
1799
Date d'inscription
vendredi 27 décembre 2002
Dernière intervention
19 juillet 2018
0
Merci
La question était :



"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"



Mon code répond au problème que tu nous exposais au départ, me semble-t'il...



Bonne prog'
Commenter la réponse de japee
Messages postés
87
Date d'inscription
samedi 6 novembre 2004
Dernière intervention
17 décembre 2005
0
Merci
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!)....
Commenter la réponse de Niki2001

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.