Donner le focus à une application externe [Résolu]

Le_proprio_de_mykeyes 60 Messages postés mardi 26 juillet 2005Date d'inscription 16 avril 2006 Dernière intervention - 16 avril 2006 à 02:19 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 17 avril 2006 à 00:52
Je m'explique: j'ai mon application principale "Windows Controller" qui fait Process.Start("FCSCtrl.exe") et qui stocke le Process dans fcsConsoleProcess. (FCS = Fast Console Script"). Je voudrais, lorsqu'on clique sur le menu, que ca focus sur la fenêtre de la console FCS. je sais qu'on peut utiliser HasExited pour vérifier mais je ne trouve pas comment donner le focus à cette fenêtre . Est-ce que qqun peut m'aider? Merci d'avance
Afficher la suite 

6 réponses

Répondre au sujet
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 16 avril 2006 à 11:58
+3
Utile
Exemple :
NativeMethods.SetWindowPos(
new HandleRef(this.fcsConsoleProcess, this.fcsConsoleProcess.MainWindowHandle),
NativeMethods.HWND_TOP,
0,
0,
0,
0,
NativeMethods.SWP_NOMOVE | NativeMethods.SWP_NOSIZE
);

Avec la classe NativeMethods définie comme ceci :
------
using System;
using System.Runtime.InteropServices;


internal class NativeMethods
{
private NativeMethods()
{
}


static NativeMethods()
{
NativeMethods.HWND_TOP = new HandleRef(null, IntPtr.Zero);
}


public static readonly HandleRef HWND_TOP;


public const int SWP_NOSIZE = 0x0001;
public const int SWP_NOMOVE = 0x0002;


[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern bool SetWindowPos(
HandleRef hWnd,
HandleRef hWndInsertAfter,
int X,
int Y,
int cx,
int cy,
int uFlags
);
}
------

/*
coq
MVP Visual C#
*/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 16 avril 2006 à 11:55
0
Utile
Salut,

Avec la méthode SetWindowPos de l'API Win.

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Le_proprio_de_mykeyes 60 Messages postés mardi 26 juillet 2005Date d'inscription 16 avril 2006 Dernière intervention - 16 avril 2006 à 20:07
0
Utile
C'est en plein ça merci à toi Coq
Commenter la réponse de Le_proprio_de_mykeyes
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 16 avril 2006 à 23:05
0
Utile
Coq, à ton avis c'est mieux d'utiliser SetWindowPos ou SetForegroundWindow ?
Commenter la réponse de Lutinore
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 16 avril 2006 à 23:44
0
Utile
En fait je ne sais pas trop quoi penser sur ce coup là.
La seule différence notable à laquelle je pense est la différence de comportement si l'application à auparavant utiliser LockSetForegroundWindow : avec SetWindowPos, la fenêtre passera au dessus sans prendre le focus, alors qu'avec SetForegroundWindow elle se contentera de "clignoter" en barre des tâches sans changer de z-order.
Mais je ne suis pas complètement au point côté API Win, j'ai probablement rater d'autre subtilités (priorités d'accès aux ressources, etc etc)

Donc j'aurais tendance a privilégier SetWindowPos, juste parce que j'oublie toujours l'existence de SetForegroundWindow :p

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 17 avril 2006 à 00:52
0
Utile
Je me suis demandé quel était l'avantage de l'une de ces fonctions par rapport à l'autre sans vraiment trouver.. Je te remercie de ta réponse. : )
Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.