begin process at 2010 02 10 00:05:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Au secours

 > 

Donner le focus à une application externe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Donner le focus à une application externe

dimanche 16 avril 2006 à 02:19:34 | Donner le focus à une application externe

Le_proprio_de_mykeyes

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
dimanche 16 avril 2006 à 11:55:40 | Re : Donner le focus à une application externe

coq

Administrateur CodeS-SourceS
Salut,

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


/*
coq
MVP Visual C#
*/
dimanche 16 avril 2006 à 11:58:35 | Re : Donner le focus à une application externe

coq

Administrateur CodeS-SourceS
Réponse acceptée !

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#
*/

dimanche 16 avril 2006 à 20:07:43 | Re : Donner le focus à une application externe

Le_proprio_de_mykeyes

C'est en plein ça merci à toi Coq
dimanche 16 avril 2006 à 23:05:00 | Re : Donner le focus à une application externe

Lutinore

Administrateur CodeS-SourceS

Coq, à ton avis c'est mieux d'utiliser SetWindowPos ou SetForegroundWindow ?

dimanche 16 avril 2006 à 23:44:37 | Re : Donner le focus à une application externe

coq

Administrateur CodeS-SourceS
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#
*/
lundi 17 avril 2006 à 00:52:43 | Re : Donner le focus à une application externe

Lutinore

Administrateur CodeS-SourceS

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. : )



Cette discussion est classée dans : application, process, focus, donner, externe


Répondre à ce message

Sujets en rapport avec ce message

Application multi form [ par LuckyLuck ] Bon ben voilà, j'ai fait une application qui est en fait un form, qui crée une seconde classe(le deuxième form) et qui l'affiche. Tt va bien, sauf que Executer un prgm externe [ par Virtua747 ] J'ai chercher dans le forum et je trouve partout que c'est System.Diagnostics.Process.Start(Path,Arg);Mon problème est que Process est inconnu dans Di Lancer une application externe dans un mdi form [ par Tsu91 ] Bonjour,Je voudrais savori s'il est possible de lancer un prgramme windows, dans un projet c# dans un form MDI ?Je voudrais lancer cmd.exe par exemple Bouton OK externe [ par vxr888 ] J'aimerais activer un bouton OK externe à mon application (c'est-à-dire faisant partie d'une autre application) mais en l'activant via la mienne.Quelq Appel application externe [ par Ninounette ] Salut à tous!Je dispose d'une application qui, après avoir fait son travail, souhaite en appeller une autre (via l'exe de cette dernière).Ces deux app Gérer une apllication externe (Process) [ par sOuRisoOo ] Bonjour,Je voulais savoir comment je peut faire en C# pour pouvoir: - démarrer une application externe à mon programme - la contrôler (gestion des e Petit Probleme [ par MorpionMx ] Bonjour, Je développe une application qui detecte quand internet explorer est lancé, le but etant de pouvoir le controler comme une instance de l'obj Lancer une application... [ par Yandroide ] Salut, Je voudrais pouvoir lancer une appli externe à mon application. Je réussi à le faire avec Process.start... Mon problème est de pouvoir afficher contrôle du clavier [ par Yandroide ] salut, J'ai un bouton qui lance une application externe dès qu'on clique dessus. L'application externe devient la fenêtre active. Je voudrais pouvoir Executer une application sur un serveur [ par MayDuroc ] J'ai une application sur un poste client qui execute une application.    Process currentProcess = Process.GetCurrentProcess();&nbsp


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales