none
Forcer la mise au premier plan d'une application lancée RRS feed

  • Question

  • Bonjour,

    Mon application occupe tout l'écran (même la barre des taches est masquée) et elle lance d'autres application, qui doivent alors passer au premier plan. Or ce n'est pas le cas pour toutes les applications lancées, certaines sont totalement cachée derrière mon application...et d'autres passent bien au premier plan, mais ne redonnent pas le focus à mon application ensuite.

    Je voudrais savoir comment après avoir lancé un process, je peux "forcer" la mise au premier plan de l'application, puis lorsque le process est terminé, reprendre le premier pour mon application!?

    D'avance merci!!

    Dim myProcess As New Process()
    myProcess.StartInfo.FileName = emuName
    myProcess.StartInfo.WorkingDirectory = emuDir
    myProcess.StartInfo.Arguments = emuCmdFull
    myProcess.Start()
    myProcess.WaitForExit()
    myProcess.Close()

    lundi 12 novembre 2012 07:59

Réponses

  • ... Mon application occupe tout l'écran (même la barre des taches est masquée) ...

    et elle lance d'autres application, qui doivent alors passer au premier plan.

    ...

    puis lorsque le process est terminé, reprendre le premier pour mon application!? ...

    Bonjour,

    En complément :

    Le recouvrent de la barre de tâche interdit à un utilisateur ne sachant pas comme la réafficher de pouvoir se servir d'autres application, il peut être mieux de ne pas recouvrir la barre de tpaches...

    Il ne faut à la même place qu'il n'y ait qu'une seule application (toujours au premier plan), sinon elles vont néanmoins se recouvrir mutuellement.

    Si ton application est paramétrée pour être toujours au premier plan, elle s'y retrouvera de nouveau quand elle sera seule de ce type à l'écran (TopMost = true) il me semble...

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    • Marqué comme réponse TroxsaEditor mardi 13 novembre 2012 22:15
    • Non marqué comme réponse TroxsaEditor mardi 13 novembre 2012 22:15
    • Proposé comme réponse TroxsaEditor mardi 13 novembre 2012 22:15
    • Marqué comme réponse TroxsaEditor mardi 13 novembre 2012 22:54
    mardi 13 novembre 2012 13:11

Toutes les réponses

  • Bonjour,

    Avec le code ci-dessous est-ce que ça fonctionne ?

    Class Program
    	<DllImport("User32.dll")> _
    	Private Shared Function BringWindowToTop(hWnd As IntPtr) As Boolean
    	End Function
    
    
    	Private Shared Sub Main(args As String())
    		Dim prc As New Process()
    		prc.StartInfo.FileName = "cmd.exe"
    		prc.Start()
                    'exemple de vérification fonctionnelle
    		While True
    			BringWindowToTop(prc.MainWindowHandle) 'fonction à appeler pour mettre en front
    			System.Threading.Thread.Sleep(5000)
    		End While
    	End Sub
    End Class
     

    Cordialement


    Merci de valider par "Proposer comme réponse" si celle-ci répond à votre demande !


    • Modifié Lyamine lundi 12 novembre 2012 09:40
    lundi 12 novembre 2012 09:40
  • ... Mon application occupe tout l'écran (même la barre des taches est masquée) ...

    et elle lance d'autres application, qui doivent alors passer au premier plan.

    ...

    puis lorsque le process est terminé, reprendre le premier pour mon application!? ...

    Bonjour,

    En complément :

    Le recouvrent de la barre de tâche interdit à un utilisateur ne sachant pas comme la réafficher de pouvoir se servir d'autres application, il peut être mieux de ne pas recouvrir la barre de tpaches...

    Il ne faut à la même place qu'il n'y ait qu'une seule application (toujours au premier plan), sinon elles vont néanmoins se recouvrir mutuellement.

    Si ton application est paramétrée pour être toujours au premier plan, elle s'y retrouvera de nouveau quand elle sera seule de ce type à l'écran (TopMost = true) il me semble...

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    • Marqué comme réponse TroxsaEditor mardi 13 novembre 2012 22:15
    • Non marqué comme réponse TroxsaEditor mardi 13 novembre 2012 22:15
    • Proposé comme réponse TroxsaEditor mardi 13 novembre 2012 22:15
    • Marqué comme réponse TroxsaEditor mardi 13 novembre 2012 22:54
    mardi 13 novembre 2012 13:11
  • Bonjour,

    Je suis d'accord avec EhJoe, il faudra jouer avec la propriété TopMost de la form principal, de faire la désactivation quand une autre appli est appelé puis de la réactiver quand il le faut

    Cordialement,


    Cordialement,

    mardi 13 novembre 2012 22:15
    Auteur de réponse
  • Merci pour vos réponses!

    C'est en effet ce que j'ai fait...et cela me satisfait pleinement!

    Dim myProcess As New Process()
    myProcess.StartInfo.FileName = emuName
    myProcess.StartInfo.WorkingDirectory = emuDir
    myProcess.StartInfo.Arguments = emuCmdFull
    myProcess.Start()
    Me.Topmost = False myProcess
    .WaitForExit() myProcess.Close()
    Me.Topmost = True

    Merci encore!!

    mardi 13 novembre 2012 22:32
  • Bonsoir,

    Alors t'as le droit de me mettre un point en haut à gauche de ma réponse (rectangle avec triangle vert) à cliquer :o)

    Cordialement.



    Joseph Attila PUSZTAY
    EhJoe       Logiciels       Romans       Ecrire


    mardi 13 novembre 2012 23:03