Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de
préfèrence) est pressez, et ceux, y compris quand c'est une autre aplication
qui à le focus.
Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code,
ou une piste?
> Je voudrai recevoir une notification lorsqu'une touche est pressée
int GetAsyncKeyState(int codeTouche); pour F11 le codeTouche = VK_F11 = 7A= 7*16+10
C'est une fonction que tu places dans ton code. Attention, ce N'est PAS une interception d'événement système.
Si tu veux scruter la touche en permanence, il faut mettre cette fonction dans un thread qui va l'exécuter toute les 20ème de secondes.
Ledev a écrit dans le message :
Bonjour,
Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de préfèrence) est pressez, et ceux, y compris quand c'est une autre
aplication
qui à le focus. Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code, ou une piste?
Merci, a+.
Phildes
Voici un exemple : C'est une fenetre qui affiche un indicateur si la touche F11 est enfoncé
1 - il faut créer le lien avec la fonction "GetAsyncKeyState( )" de la DLL "user32" using System.Runtime.InteropServices; // dans la classe [DllImport("user32")] public static extern short GetAsyncKeyState(int vKey);
2 - installer un méthode qui s'effectuera 2 fois par seconde using System.Timers; // lors de l'initialisation du programme System.Timers.Timer chrono = new System.Timers.Timer(); chrono.Elapsed += new ElapsedEventHandler(fenPh_OnTimer); chrono.Interval = 500; chrono.Enabled = true;
3 - tester la touche "F11" private void fenPh_OnTimer(Object source, ElapsedEventArgs e) { int val = GetAsyncKeyState(7*16+10); } **************************************************************************** * Note : GetAsyncKeyState( ) retourne : 0 si la touche n'est pas enfoncée 32000 si la touche est enfoncé 1 si la touche a été relachée
(voyez la doc pour + de détail ( www.google.com : chercher "GetAsyncKeyState")
**************************************************************************** * Programme complet **************************************************************************** * namespace fenPh { using System; using System.Windows.Forms; using System.Drawing;
//******************************** //**** utile pour le Timer //******************************** using System.Timers;
//******************************** //**** utile pour créer le lien avec une DLL //******************************** using System.Runtime.InteropServices;
public class fen : Form { //******************************** //**** Créer le lien avec la dll //******************************** [DllImport("user32")] public static extern short GetAsyncKeyState(int vKey);
public fen(int lgP, int htP, String titleP) { Size = new Size(lgP, htP); Text = titleP; Cursor = Cursors.Hand;
//******************************** //**** constructition du Timer //******************************** System.Timers.Timer chrono = new System.Timers.Timer(); chrono.Elapsed += new ElapsedEventHandler(fenPh_OnTimer); chrono.Interval = 500; // mettre ce chiffre à 50 dans votre appli chrono.Enabled = true; }
//******************************** //**** Methode appelée par le Timer. //******************************** private void fenPh_OnTimer(Object source, ElapsedEventArgs e) { //******************************** //**** teste la touche F11 //******************************** int val = GetAsyncKeyState(7*16+10);
Font drawFont = new Font("Arial", 16); SolidBrush drawBrush = new SolidBrush(Color.Black); StringFormat drawFormat = new StringFormat(); g.DrawString(txt, drawFont, drawBrush, x, y, drawFormat); } } }
Ledev a écrit dans le message :
Bonjour,
Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de préfèrence) est pressez, et ceux, y compris quand c'est une autre
aplication
qui à le focus. Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code, ou une piste?
Merci, a+.
Voici un exemple : C'est une fenetre qui affiche un indicateur si la touche
F11 est enfoncé
1 - il faut créer le lien avec la fonction "GetAsyncKeyState( )" de la DLL
"user32"
using System.Runtime.InteropServices;
// dans la classe
[DllImport("user32")]
public static extern short GetAsyncKeyState(int vKey);
2 - installer un méthode qui s'effectuera 2 fois par seconde
using System.Timers;
// lors de l'initialisation du programme
System.Timers.Timer chrono = new System.Timers.Timer();
chrono.Elapsed += new ElapsedEventHandler(fenPh_OnTimer);
chrono.Interval = 500;
chrono.Enabled = true;
3 - tester la touche "F11"
private void fenPh_OnTimer(Object source, ElapsedEventArgs e)
{
int val = GetAsyncKeyState(7*16+10);
}
****************************************************************************
*
Note : GetAsyncKeyState( ) retourne :
0 si la touche n'est pas enfoncée
32000 si la touche est enfoncé
1 si la touche a été relachée
(voyez la doc pour + de détail ( www.google.com : chercher
"GetAsyncKeyState")
****************************************************************************
*
Programme complet
****************************************************************************
*
namespace fenPh
{
using System;
using System.Windows.Forms;
using System.Drawing;
//********************************
//**** utile pour le Timer
//********************************
using System.Timers;
//********************************
//**** utile pour créer le lien avec une DLL
//********************************
using System.Runtime.InteropServices;
public class fen : Form
{
//********************************
//**** Créer le lien avec la dll
//********************************
[DllImport("user32")]
public static extern short GetAsyncKeyState(int vKey);
public fen(int lgP, int htP, String titleP)
{
Size = new Size(lgP, htP);
Text = titleP;
Cursor = Cursors.Hand;
//********************************
//**** constructition du Timer
//********************************
System.Timers.Timer chrono = new System.Timers.Timer();
chrono.Elapsed += new ElapsedEventHandler(fenPh_OnTimer);
chrono.Interval = 500; // mettre ce chiffre à 50 dans votre appli
chrono.Enabled = true;
}
//********************************
//**** Methode appelée par le Timer.
//********************************
private void fenPh_OnTimer(Object source, ElapsedEventArgs e)
{
//********************************
//**** teste la touche F11
//********************************
int val = GetAsyncKeyState(7*16+10);
Font drawFont = new Font("Arial", 16);
SolidBrush drawBrush = new SolidBrush(Color.Black);
StringFormat drawFormat = new StringFormat();
g.DrawString(txt, drawFont, drawBrush, x, y, drawFormat);
}
}
}
Ledev <Ledev@freesurf.fr> a écrit dans le message :
Ow9XeBlcEHA.964@TK2MSFTNGP10.phx.gbl...
Bonjour,
Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de
préfèrence) est pressez, et ceux, y compris quand c'est une autre
aplication
qui à le focus.
Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code,
ou une piste?
Voici un exemple : C'est une fenetre qui affiche un indicateur si la touche F11 est enfoncé
1 - il faut créer le lien avec la fonction "GetAsyncKeyState( )" de la DLL "user32" using System.Runtime.InteropServices; // dans la classe [DllImport("user32")] public static extern short GetAsyncKeyState(int vKey);
2 - installer un méthode qui s'effectuera 2 fois par seconde using System.Timers; // lors de l'initialisation du programme System.Timers.Timer chrono = new System.Timers.Timer(); chrono.Elapsed += new ElapsedEventHandler(fenPh_OnTimer); chrono.Interval = 500; chrono.Enabled = true;
3 - tester la touche "F11" private void fenPh_OnTimer(Object source, ElapsedEventArgs e) { int val = GetAsyncKeyState(7*16+10); } **************************************************************************** * Note : GetAsyncKeyState( ) retourne : 0 si la touche n'est pas enfoncée 32000 si la touche est enfoncé 1 si la touche a été relachée
(voyez la doc pour + de détail ( www.google.com : chercher "GetAsyncKeyState")
**************************************************************************** * Programme complet **************************************************************************** * namespace fenPh { using System; using System.Windows.Forms; using System.Drawing;
//******************************** //**** utile pour le Timer //******************************** using System.Timers;
//******************************** //**** utile pour créer le lien avec une DLL //******************************** using System.Runtime.InteropServices;
public class fen : Form { //******************************** //**** Créer le lien avec la dll //******************************** [DllImport("user32")] public static extern short GetAsyncKeyState(int vKey);
public fen(int lgP, int htP, String titleP) { Size = new Size(lgP, htP); Text = titleP; Cursor = Cursors.Hand;
//******************************** //**** constructition du Timer //******************************** System.Timers.Timer chrono = new System.Timers.Timer(); chrono.Elapsed += new ElapsedEventHandler(fenPh_OnTimer); chrono.Interval = 500; // mettre ce chiffre à 50 dans votre appli chrono.Enabled = true; }
//******************************** //**** Methode appelée par le Timer. //******************************** private void fenPh_OnTimer(Object source, ElapsedEventArgs e) { //******************************** //**** teste la touche F11 //******************************** int val = GetAsyncKeyState(7*16+10);
Font drawFont = new Font("Arial", 16); SolidBrush drawBrush = new SolidBrush(Color.Black); StringFormat drawFormat = new StringFormat(); g.DrawString(txt, drawFont, drawBrush, x, y, drawFormat); } } }
Ledev a écrit dans le message :
Bonjour,
Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de préfèrence) est pressez, et ceux, y compris quand c'est une autre
aplication
qui à le focus. Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code, ou une piste?
Merci, a+.
Bismark Prods
lol, interception des messages du système !
"Ledev" a écrit dans le message de news:
Bonjour,
Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de préfèrence) est pressez, et ceux, y compris quand c'est une autre
aplication
qui à le focus. Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code, ou une piste?
Merci, a+.
lol, interception des messages du système !
"Ledev" <Ledev@freesurf.fr> a écrit dans le message de
news:Ow9XeBlcEHA.964@TK2MSFTNGP10.phx.gbl...
Bonjour,
Je voudrai recevoir une notification lorsqu'une touche(F11 ou F12 de
préfèrence) est pressez, et ceux, y compris quand c'est une autre
aplication
qui à le focus.
Mais je ne sais pas comment procédez, quelqu'un aurait-il un bout de code,
ou une piste?
Voici un exemple : C'est une fenetre qui affiche un indicateur si la
touche
F11 est enfoncé
[SNIP]
Merci pour vos réponses :).
J'aurai préférer un loopback, mais cette solution me convient parfaitement.
a+
Ledev
"Ledev" a écrit dans le message de news:e$HT$
"Phildes" a écrit dans le message de news:
> Voici un exemple : C'est une fenetre qui affiche un indicateur si la touche > F11 est enfoncé
[SNIP]
Merci pour vos réponses :).
J'aurai préférer un loopback, mais cette solution me convient
parfaitement.
Eux, je voulais dire, callback :o)
"Ledev" <Ledev@freesurf.fr> a écrit dans le message de
news:e$HT$OpcEHA.2664@TK2MSFTNGP09.phx.gbl...
"Phildes" <phildes2@wanadoo.fr> a écrit dans le message de news:
uGSOD9ncEHA.2840@TK2MSFTNGP11.phx.gbl...
> Voici un exemple : C'est une fenetre qui affiche un indicateur si la
touche
> F11 est enfoncé
[SNIP]
Merci pour vos réponses :).
J'aurai préférer un loopback, mais cette solution me convient
> Voici un exemple : C'est une fenetre qui affiche un indicateur si la touche > F11 est enfoncé
[SNIP]
Merci pour vos réponses :).
J'aurai préférer un loopback, mais cette solution me convient
parfaitement.
Eux, je voulais dire, callback :o)
Phildes
J'avais traduit ;o) Comme vous j'avais été surpris par cette procédure quand j'ai été confronté au problème.
@+
phildes
Ledev a écrit dans le message :
"Ledev" a écrit dans le message de news:e$HT$ > > "Phildes" a écrit dans le message de news: > > > Voici un exemple : C'est une fenetre qui affiche un indicateur si la > touche > > F11 est enfoncé > > [SNIP] > > Merci pour vos réponses :). > > J'aurai préférer un loopback, mais cette solution me convient parfaitement.
Eux, je voulais dire, callback :o)
J'avais traduit ;o)
Comme vous j'avais été surpris par cette procédure quand j'ai été confronté
au problème.
@+
phildes
Ledev <Ledev@freesurf.fr> a écrit dans le message :
OIFvdXycEHA.2812@tk2msftngp13.phx.gbl...
"Ledev" <Ledev@freesurf.fr> a écrit dans le message de
news:e$HT$OpcEHA.2664@TK2MSFTNGP09.phx.gbl...
>
> "Phildes" <phildes2@wanadoo.fr> a écrit dans le message de news:
> uGSOD9ncEHA.2840@TK2MSFTNGP11.phx.gbl...
> > Voici un exemple : C'est une fenetre qui affiche un indicateur si la
> touche
> > F11 est enfoncé
>
> [SNIP]
>
> Merci pour vos réponses :).
>
> J'aurai préférer un loopback, mais cette solution me convient
parfaitement.
J'avais traduit ;o) Comme vous j'avais été surpris par cette procédure quand j'ai été confronté au problème.
@+
phildes
Ledev a écrit dans le message :
"Ledev" a écrit dans le message de news:e$HT$ > > "Phildes" a écrit dans le message de news: > > > Voici un exemple : C'est une fenetre qui affiche un indicateur si la > touche > > F11 est enfoncé > > [SNIP] > > Merci pour vos réponses :). > > J'aurai préférer un loopback, mais cette solution me convient parfaitement.