Bonjour,

J'essaie de faire un logiciel de capture d'écran particulier, il faut donc que lors de l'appuie de Impr Ecran, que le screen se prenne bien, même si le logiciel n'est pas la fenêtre active. Il faut donc utiliser un script de hook pour pouvoir intercepter les frappes.

J'ai trouvé sur Internet, un script assez simple d'utilisation et très compact, c'est pour ça qu'il me plait particulièrement.
Cependant, j'ai un problème, sinon je ne serais pas là me diriez vous !

Voici le script de hook en question :
http://paste2.org/p/2175981

Et il s'utilise comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
private RegisterHotKeyClass _ImprEcran = new RegisterHotKeyClass();
 
private void Form1_Load(object sender, EventArgs e)
{
     _ImprEcran.Keys = Keys.PrintScreen;
     _ImprEcran.ModKey = 0;
     _ImprEcran.WindowHandle = this.Handle;
     _ImprEcran.HotKey += new RegisterHotKeyClass.HotKeyPass(screenShotAll);
     _ImprEcran.StarHotKey();
}
Comme ceci, ça fonctionne très bien, j'appuie sur Impr Ecran et ça appelle bien ma méthode screenShotAll().
Je me suis dis, chouette, je vais rajouter un deuxième bind, en faisant Alt + Impr Ecran, soit, le nouveau code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private RegisterHotKeyClass _ImprEcran = new RegisterHotKeyClass();
private RegisterHotKeyClass _ALT_ImprEcran = new RegisterHotKeyClass();
 
private void Form1_Load(object sender, EventArgs e)
{
     _ImprEcran.Keys = Keys.PrintScreen;
     _ImprEcran.ModKey = 0;
     _ImprEcran.WindowHandle = this.Handle;
     _ImprEcran.HotKey += new RegisterHotKeyClass.HotKeyPass(screenShotAll);
     _ImprEcran.StarHotKey();
 
     _ALT_ImprEcran.Keys = Keys.PrintScreen;
     _ALT_ImprEcran.ModKey = RegisterHotKeyClass.MODKEY.MOD_ALT;
     _ALT_ImprEcran.WindowHandle = this.Handle;
     _ALT_ImprEcran.HotKey += new RegisterHotKeyClass.HotKeyPass(screenShotActive);
     _ALT_ImprEcran.StarHotKey();
}
Dans le deuxième bind je précise bien que je veux ALT + Impr Ecran.

Et là, ça ne fonctionne plus.
Si je fais ALT + Impr Ecran, ça appelle bien ma méthode screenShotActive(), mais si je fais simplement Impr Ecran, ça n'appelle plus la méthode screenShotAll().... Et je ne sais pas pourquoi. Peut-être un conflit ou je ne sais quoi, j'ai peut être fait une erreur de codage.

Voilà, avez-vous une idée ? Ou peut-être une autre façon de coder ça ?
En tout cas j'aimerai bien conserver ce script de hook car il est assez simple et compréhensible. J'en ai trouvé d'autres qui eux fonctionnent, mais ils font 3 pages de .cs avec plein de classes, c'est vraiment très lourd...

Merci d'avance pour votre aide,

Bonne journée.