Touche de raccourci + notifyIcon

Résolu
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2010
- 7 avril 2005 à 01:02
cs_titwan
Messages postés
23
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
31 août 2007
- 5 avril 2006 à 08:25
Bonjour, j'ai une application que j'ai reduit dans le systray.



j'aimerais savoir s'il est possible de réagir a une combinaison de
touche, alors que je n'ai qu'un NotifyIcon et un ContextMenu associé ...



Pendant que j'y suis, quelle est la meilleure facon de mettre une
application dans le systray, j'ai donc une form vide, avec seulement le
notifyicon et le contextmenustrip, dans les propriétés j'ai mis le
windowstate à minimized et le ShowInTaskBar à False, je veux que ca me
prenne le minimum de mémoire, c'est bon comme ca ?



Merci



Je bosse en .net 2, mais je pense pas que ca change grand chose.

<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

7 réponses

cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
7 avril 2005 à 08:20
Salut,

En utilisant les méthodes des APIs : RegisterHotkey et UnregisterHotKey c'est faisable.
Je n'ai pas connaissance d'un équivalent existant dans le Framework .Net 1.1, et encore moins en 2.0 :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
sebseb42
Messages postés
495
Date d'inscription
dimanche 6 juillet 2003
Statut
Membre
Dernière intervention
9 novembre 2007
1
7 avril 2005 à 18:30
sinon il y a la methode du GetAsynchKeyState

ton application doit verifier en permanence l'etat du clavier, et des
qu'une condition est rempli, tu fait l'action que tu souhaite
0
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2010
29
7 avril 2005 à 20:42
Merci beaucoup coq :) j'ai opté pour ta solution car ca a l'air d'etre la meilleure ;)



Donc pour ceux que ca interesse :



/* ------- using HOTKEYs in a C# application -------



in form load :

bool success = RegisterHotKey(Handle,
100, KeyModifiers.Control | KeyModifiers.Shift,
Keys.J);



in form closing :

UnregisterHotKey(Handle, 100);





protected override void WndProc( ref Message m )

{

const int WM_HOTKEY = 0x0312;



switch(m.Msg)

{

case WM_HOTKEY:


MessageBox.Show("Hotkey pressed");

break;

}

base.WndProc(ref m );

}



------- using HOTKEYs in a C# application ------- */



[DllImport("user32.dll", SetLastError=true)]

public static extern bool
RegisterHotKey( IntPtr hWnd, // handle to
window

int
id,
// hot key identifier


KeyModifiers fsModifiers, // key-modifier options

Keys
vk //
virtual-key code

);



[DllImport("user32.dll", SetLastError=true)]

public static extern bool
UnregisterHotKey( IntPtr hWnd, // handle to
window

int
id // hot key identifier

);



[Flags()]

public enum KeyModifiers

{

None = 0,

Alt = 1,

Control = 2,

Shift = 4,

Windows = 8

}



c'est tout



j'ai trouvé les infos sur www.codeproject.com/csharp/popupkiller.asp (a
regarder avec le cache de google, car codeproject a l'air d'avoir des
problèmes


<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
7 avril 2005 à 21:07
De rien :-)

Je pense que tu devrais sortir "const int WM_HOTKEY = 0x0312;" du WndProc et plutot la mettre en membre de la classe, ce n'est pas nécessaire de l'avoir locale à la fonction.
En plus vu le nombre de message que reçoit une appli, ça doit être méchant niveau perfs :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2010
29
7 avril 2005 à 21:44
Ce que j'ai montré c'est le code que j'ai trouvé sur le net, mais c'est
clair que ca doit pouvoir s'optimiser, bien sur en virant la constante
d'ici, et peut etre en supprimant le switch, en laissant un simple if




<hr>
Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
98
7 avril 2005 à 22:28
Ouep :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_titwan
Messages postés
23
Date d'inscription
mercredi 2 avril 2003
Statut
Membre
Dernière intervention
31 août 2007

5 avril 2006 à 08:25
super les gars continuez
0