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

VB.NET Discussion :

Interop Outlook et fenêtre - Switch du foreground


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut Interop Outlook et fenêtre - Switch du foreground
    Bonjour à tous,
    Voilà je tentes actuellement de faire quelque chose qui est sensé être très simple ...

    Dans une application lors d'un click sur un bouton, je dois afficher une boîte de dialogue 'GetSelectNamesDialog' de Outlook via l'interop (Outlook 2010). Cette boîte de dialogue doit être alors amenée au premier plan.
    A noter que cette boîte de dialogue ne peut être affichée que si une instance de Outlook tourne sur le poste. C'est donc bien l'application Outlook qui doit être amenée au premier plan, et par conséquent la boite de dialogue en question.

    Ensuite lorsque cette boite de dialogue est fermée, je dois remettre la fenêtre de mon application au premier plan.

    Le gros problème que j'ai est que la fenêtre de mon application ne semble par pouvoir reprendre la main et s'afficher au premier plan. La fenêtre clignote dans la barre des tâches ...

    J'avais initialement testée avec la fonction Api SetForegroundWindows mais il semblerait que celle ci ai été modifié afin d'éviter justement le fait de pouvoir "voler" le focus ... Et que celle ci ai été modifiée par la méthode Activate()

    Voici le code actuel auquel je suis arrivé, c'est à dire avec une autre fonction API

    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
    41
    42
    43
     
    Dim appOutlook As Outlook.Application
                appOutlook = CType(CreateObject("Outlook.Application"), Outlook.Application)
                Dim snd As Outlook.SelectNamesDialog = appOutlook.Session.GetSelectNamesDialog()
                                        snd.SetDefaultDisplayMode(Outlook.OlDefaultSelectNamesDisplayMode.olDefaultMembers)
     
                Dim ProcessIdOutlook As IntPtr = IntPtr.Zero
     
                Dim ProcessIdApplic As IntPtr = IntPtr.Zero
     
                Dim processes As Process()
                processes = Process.GetProcesses()
                For Each proc As Process In processes
                    If proc.ProcessName.ToLower.Contains("my_application") Then
                        ProcessIdApplic = proc.MainWindowHandle
                    ElseIf proc.ProcessName.ToLower.Contains("outlook") Then
                        ProcessIdOutlook = proc.MainWindowHandle
                    End If
     
                Next
     
                Me.TopMost = False
                If appOutlook.ActiveExplorer Is Nothing = False Then appOutlook.ActiveExplorer.Activate()
                If appOutlook.ActiveInspector Is Nothing = False Then appOutlook.ActiveInspector.Activate()
     
     
     
                If Not ProcessIdOutlook = IntPtr.Zero Then             
                    SwitchToThisWindow(ProcessIdOutlook, True)              
                    'SetForegroundWindow(ProcessIdOutlook)
                End If
     
     
                Dim rep As Boolean = snd.Display
                Me.TopMost = True
     
                'Me.BringToFront()
                Me.Activate()
     
                If Not ProcessIdApplic = IntPtr.Zero Then                
                    SwitchToThisWindow(ProcessIdApplic, True)
                    'SetForegroundWindow(ProcessIdApplic)
                End If
    Auriez vous une piste à me proposer ? Car là je dosi avouer que je ne sais plus trop quoi tester ...

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Etant donné que le sujet est passé en 3 ème page du forum, je me permet de remettre à jour le sujet car mon problème n'est toujours pas résolu ...

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/09/2013, 11h30
  2. ERREUR interop Outlook sous Vista
    Par bensra dans le forum Windows Forms
    Réponses: 11
    Dernier message: 13/06/2009, 23h46
  3. Réponses: 0
    Dernier message: 12/12/2008, 09h06
  4. pb Microsoft.Office.Interop.Outlook en version 10.0
    Par julienspy dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/07/2007, 14h14
  5. Réponses: 1
    Dernier message: 24/10/2005, 23h47

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