Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Menu Demarrer [ Archives / API ] (koaiz)

mercredi 13 avril 2005 à 12:33:40 | Menu Demarrer

koaiz

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

mercredi 13 avril 2005 à 16:31:50 | Re : Menu Demarrer

WhiteHippo

Membre Club

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.


mercredi 13 avril 2005 à 16:34:24 | Re : Menu Demarrer

WhiteHippo

Membre Club
Oups tout le monde aura rectifier il s'agissait d'un HOOK  pas d'un HOO .

Cordialement.

mercredi 13 avril 2005 à 16:41:27 | Re : Menu Demarrer

MAsterC

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

mercredi 13 avril 2005 à 17:23:05 | Re : Menu Demarrer

japee

Membre Club Administrateur CodeS-SourceS
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'

jeudi 14 avril 2005 à 12:07:50 | Re : Menu Demarrer

koaiz

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

jeudi 14 avril 2005 à 13:34:18 | Re : Menu Demarrer

WhiteHippo

Membre Club
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.


jeudi 14 avril 2005 à 17:22:45 | Re : Menu Demarrer

japee

Membre Club Administrateur CodeS-SourceS
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'

mercredi 13 juillet 2005 à 20:09:07 | Re : Menu Demarrer

Niki2001

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!)....



Cette discussion est classé dans : menu, windows, cacher, touche, demarrer


Répondre à ce message

Sujets en rapport avec ce message

Verrouiller la touche windows [ par slhuilli ] Bonjour,je cherche un bout de code qui permette que quand on appuie sur la touche du clavier Windows, rien ne se passe.Merci Bloquer la touche Windows [ par Mamute ] je cherche un moyen de bloquer la touche windows, ce qui comprend l'affichage du menu demarrer, ainsi que les raccourci genre win+E ... mais en evitan ajouter 1 item au menu contextuel windows [ par costello ] Bonjour!!bon, voilà le titre un peu ring',en fait je SAIS ajouter un item à un menu contextuel windows.En l'occurence, je voulais ajouter l'item 'Lire Menu spéciaux de Windows XP [ par John Dogget ] Bonjour à tous. Quelqu'un connait'il un composant qui pourrait me permettre de faire des menus dans le style de Windows XP comme les menus de gauche Cacher la barre de menu [ par Indelphini ] Bonjour est-il possible de cacher la barre de menus en cours d'exécution ? La propriété Visible n'existe pas pour TMainMenu. Merci modifier le menu popup windows [ par 365tib ] Bonjours,Quelqu'un sait-il comment modifier (ajouter un item) dans le menu popup windows XP? (à côté de envoyer vers, supprimer, ...).merci d'avance. Mon logiciel ne démarre pas sous certain PC !!! [ par astrosug44 ] Bonjour,J'ai dévellopée une application sous Delphi 7. Le logiciel est téléchargeable sur le net iciPour la majorité des utilisateurs, le logiciel tou Mona pplication empèche la fermeture de Windows [ par f6dqm1 ] BonjourJ'ai écrit une application Delphi qui empèche la fermeture de Windows si cette application tourne.Si je fais Arrèter, l'écran passe en sombre p Erreur de chargement de la DLL [ par jldk007 ] BonjourJe dispose d'un Windows XP Familiale SP2 et d'Office XP Pro. Je n'arrive pas à afficher la boite de dialogue du masque de saisie dans MS ACCESS associer un bouton en delphi6 a une touche clavier [ par inegliz ] bonjour !j'ai programmé une procedure de calcul dans un bonton en delphi6 , je voudrai associer mon bouton (bitbtn) à  la touche (+) du clavier pour q


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,31 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.