Récupérer focus application

cybers7119 Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 janvier 2009 - 17 juin 2008 à 11:29
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 - 17 juin 2008 à 15:08
Salut,


J'ai créé une application en C# qui ne peut pas être lancée deux fois en même temps (l'instance de l'appli est unique).
Sauf que lorsque j'essaie de la lancer une deuxième fois, j'aimerais afficher une MessageBox et récupérer le focus de l'application déjà lancée.
Pour la MessageBox, aucun problème, mais existe-t-il une méthode permettant de récupérer le focus d'une application en cours ?

Merci d'avance

5 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 juin 2008 à 12:22
essaie de récupérer le handle de la fenetre et de lui envoyer le message WM_SETFOCUS
0
cybers7119 Messages postés 20 Date d'inscription lundi 16 juin 2008 Statut Membre Dernière intervention 19 janvier 2009 2
17 juin 2008 à 13:12
Il me semble qu'il faut utiliser la fonction GetWindow, mais je n'arrive pas à la faire fonctionner (faut-il un using particulier ?).
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
17 juin 2008 à 14:34
a priori cest une api native, donc plutot un dll import?
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
17 juin 2008 à 14:55
Salut,

Pour le GetWindow, tu trouveras ce qu'il faut ici :
http://www.pinvoke.net/default.aspx/user32/GetWindow.html

Mx
MVP C# 
0

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

Posez votre question
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
17 juin 2008 à 15:08
Voici un petit exemple fonctionnant avec la calculatrice windows

<hr />[

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

static
extern
IntPtr FindWindow(
string lpClassName,
string lpWindowName);

[
DllImport(
"user32.dll")]

public
static
extern
bool SetForegroundWindow(
IntPtr hWnd);

enum
GetWindow_Cmd :
uint
{
   GW_HWNDFIRST = 0,
   GW_HWNDLAST = 1,
   GW_HWNDNEXT = 2,
   GW_HWNDPREV = 3,
   GW_OWNER = 4,
   GW_CHILD = 5,
   GW_ENABLEDPOPUP = 6
}

public static
void Main(
string[] args)
{

   IntPtr handle = FindWindow(
null,
"Calculatrice");
   SetForegroundWindow(handle);
 }
<hr />

Mx
MVP C# 
0
Rejoignez-nous