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 6 et antérieur Discussion :

Gestion de focus entre un programme géré avec une mdi principale et un programme externe


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Par défaut Gestion de focus entre un programme géré avec une mdi principale et un programme externe
    16 msg
    Bonjour.

    J'ai un programme VB6 géré avec une feuille mdiprincipale et des feuille filles. Ce programme se trouve dans la barre des tâches.
    Je lance un programme externe en mode non bloquant dont je récupère l'id du process.Je programme principale en VB6 n'est pas iconisé mais passe juste en arrière plan.

    Je laisse tourner ce programme externe et je passe à autre chose (style lecture d'email, ...etc ) de complètement différents de mes deux programmes.

    J'aimerai savoir comment ré-afficher le programme externe lancé précédemment si je clique sur l'icone du programme VB6 si mon process existe toujours.
    Je n'arrive pas à déterminer à quel évènement je fais appel quand on clique dans la barre des tâches pour réactiver un programme.

    J'espère avoir été clair.

    Il faudrait que les deux programmes ( le principale en VB6 et le second lancé en mode non bloquant ) donne l'ilusion de ne faire qu'un programme quand on manipule la barre des tâches.

    Merci de votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2011
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 112
    Par défaut
    ___Ia ora na.
    Citation Envoyé par Bouchito Voir le message
    Je laisse tourner ce programme externe et je passe à autre chose (style lecture d'email, ...etc ) de complètement différents de mes deux programmes.

    J'aimerai savoir comment ré-afficher le programme externe lancé précédemment si je clique sur l'icone du programme VB6 si mon process existe toujours.
    ___Faut-il comprendre qu'entre les deux paragraphes, le programme VB et le programme externe ont été réduits en icône dans la barre des tâches ?
    A] Si oui,
    1) vous pouvez utiliser la procédure Form_Resize qui est exécutée (notamment) à chaque fois que la propriété WindowState de la feuille est modifiée ;
    2) pour accéder au programme externe, vous pouvez utiliser l'instruction AppActivate suivie du titre de la fenêtre ou de l'identificateur que vous avez récupéré. Reste à restaurer le programme ; je n'ai trouvé que cette solution - bien peu élégante, mais qui fonctionne dans mon test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim IPr as Long   '<- id du programme externe
     
    Private Sub Form_Resize()
     
    If WindowState <> 1 Then
      DoEvents: AppActivate IPr: DoEvents: SendKeys "% R": DoEvents: SendKeys "% R"
          ' VB semble dur de la feuille --^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    End If
     
    End Sub
    ___Cela étant, si au lieu de cliquer sur l'icône du programme VB, on clique sur celle du programme externe, seul ce dernier sera évidemment restauré.
    B] sinon,
    1) le comportement est peut-être différent en dehors de XP mais
    2) sous XP, il suffit de cliquer sur l'icône du programme choisi (VB ou externe) pour le remettre au premier plan, puisque
    Le programme principal en VB6 [...] passe juste en arrière plan.
    les deux programmes VB et externe n'ont apparemment pas à se trouver ensemble au premier plan ;
    3) s'il faut malgré tout placer les deux programmes en avant-plan simultatnément, vous pouvez utiliser la même méthode qu'en A], en plaçant le code dans la procédure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form_Paint()
     
    DoEvents: AppActivate IPr: DoEvents: SendKeys "% R": DoEvents: SendKeys "% R"
       ' ^^^^^ ---  à simplifier  ---^^^    ---^^^    ---^^^
     
    End Sub
    C] dans les deux cas, une instruction on error goto... (ou on error resume next) pourrait être envisagée, pour pallier une éventuelle disparition (voulue ou non) du programme externe.
    ___Bonne réalisation de votre projet.

Discussions similaires

  1. Lier un programme Qt avec une page Web
    Par clairetj dans le forum Qt
    Réponses: 0
    Dernier message: 27/09/2013, 09h45
  2. [AC-2003] Gestion du focus entre sous-formulaires
    Par buzz73 dans le forum IHM
    Réponses: 1
    Dernier message: 23/12/2009, 16h39
  3. Réponses: 3
    Dernier message: 23/05/2007, 16h09
  4. Gestion du focus entre 2 TextBox en ASP.NET
    Par titan_33 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 23/02/2007, 16h31
  5. Comment on connecte un programme Java avec une base de données FireBird?
    Par Gomez dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 16/02/2007, 10h21

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