IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Focus sur application


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Focus sur application
    Bonjour à tous,

    Je n'arrive pas à faire revenir mon application en "bringtofront" lorque je reclick sur mon .exe.

    J'ai besoin qu'elle puisse revenir lorsque j'essais de la relancer.

    Donc je créé un singleton de mon appli pour avoir une instace unique.

    Lorsque je relance mon appli, je regarde si elle est lance et je fais un SetWindowsPos, mais ça ne fonctionne pas.

    regardez plutot


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Public Sub Main()
            '--- creer une seule instance de l'application avec un mutex
            Dim z_app As SingleInstanceApp = New SingleInstanceApp("{ae144f-fd5fs1fd-fd1sf1s-d4fsd}")
            '-- handle
            Dim z_Handle As Integer
     
            Try
                If z_app.IsRunning Then
                    '--- retour sur l'application si lancer l'appli une seconde fois
     
                    z_Handle = FindWindow("", My.Application.Info.AssemblyName)   
                    SetWindowPos(z_Handle, 0&, 0&, 0&, 0&, 0&, &H40)
     
                Else
     
    ...
    Je crois que j'utilise mal FindWindow....

    Auriez vous une idée?
    ....

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Petit probleme
    Merci de ta réponse rapide.

    J'ai donc adapter la classe à mon code mais la fonction SetForegroundWindow
    ne fonctionne pas....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Public Sub Main()
            '--- creer une seule instance de l'application avec un mutex
            Dim z_app As SingleInstanceApp = New SingleInstanceApp("{dfs4f6sef-sfs-f1s-ef1s-e}")
            '-- barre tache windows
     
            Application.EnableVisualStyles()
            Application.SetCompatibleTextRenderingDefault(False)
     
     
            Try
                If z_app.IsRunning Then
     
                    ' On récupère la liste des process avec le bon nom
                    Dim z_ProcessName As String = Process.GetCurrentProcess().ProcessName
                    Dim z_processes As Process() = Process.GetProcessesByName(z_ProcessName)
     
                    ' On va récupérer l'objet Process pour la première instance (ie la plus vieille)
                    Dim z_oldestTime As DateTime = DateTime.Now
                    Dim z_oldestProcess As Process = Nothing
     
                    For Each p As Process In z_processes
                        If p.StartTime < z_oldestTime Then
                            z_oldestTime = p.StartTime
                            z_oldestProcess = p
                        End If
                    Next
     
                    ' Si on a trouvé la plus vieille instance
                    If z_oldestProcess IsNot Nothing Then
                        ' On lui donne le focus
                        Try
                            SetForegroundWindow(z_oldestProcess.MainWindowHandle) 
                        Catch ex As Exception
                            DspErr(ex, "UH1ModCom", "Main")
                        End Try
     
                    End If
     
     
                Else
    Alors qu'elle trouve bien mon handle...
    Bizarre, plus qu'étrange...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Points : 19
    Points
    19
    Par défaut J'ai trouvé! :)
    Plutot qu'utiliser la fonction SetForegroundWindow, il faut utiliser la fonction AppActivate qui rend le focus de l'application.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Focus sur une autre application
    Par labrute dans le forum C++
    Réponses: 8
    Dernier message: 06/04/2009, 10h57
  2. garder le focus sur mon application
    Par allanibu dans le forum Langage
    Réponses: 5
    Dernier message: 10/03/2009, 10h45
  3. donner le focus sur la fenetre d application active
    Par nick974 dans le forum Delphi
    Réponses: 1
    Dernier message: 02/07/2006, 12h11
  4. Mettre le focus sur une application
    Par Raylemon dans le forum Langage
    Réponses: 17
    Dernier message: 10/05/2006, 17h52
  5. Focus sur une application Windows
    Par mixi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/10/2004, 19h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo