Détection d'activation [Résolu]

Messages postés
252
Date d'inscription
mardi 3 juin 2003
Dernière intervention
29 juin 2013
- - Dernière réponse : cs_jacques13
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Dernière intervention
29 juin 2013
- 5 janv. 2012 à 18:21
Bonjour,
Je dispose de deux applications qui collaborent simultanément dont l'une développée en VB6.
J'aimerais trouver un dispositif qui m'indique si mon appli VB est active, réduite ou en second plan.
J'ai essayé l'évènement Form_Activate mais ce n'est pas la bonne piste.
Quelqu'un pourrait-il m'aider?
Par avance, merci.
Jacques13
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
73
3
Merci
Salut

Peu importe, si tu veux savoir si ta propre fenêtre :
- est en icone : Me.WindowState = vbMinimized
- est l'application active : là, il faut avoir recours aux API pour savoir si le handle de la fenêtre est celui de ta forme :
Declare Function GetForegroundWindow Lib "user32" _
     Alias "GetForegroundWindow" () As Long
te fournira le handle de la fenêtre active qu'il suffira de comparer à Me.hWnd

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
3
3
Merci
Bonsoir jacques n°13,

C'est vrai que comme l'écrit ucFoutou, ta première question n'est pas exploitable, et que ta seconde question, en plus d'être insolente, n'est pas très précise.

Je pésume donc que tu veux lire depuis un exe vbNet ce que fait ton exe vb6, ben on peut faire ainsi en reprenant ce que mentionne judicieusement Jack, comme ceci:

Quand est lancé vb6, tu crés un fichier vb6, et quand tu ferme vb6 tu supprimes ce fichier. Ainsi tu sais si elle tourne ou pas ton application, et dans ce fichier tu mets les états de WondowState (0, 1 ou 2), comme ça une autre application peut totalement lire ce que fais ta vb6.
Tu peux aussi lire les processus...

Et tu peux de même mettre ça dans les variables d'environnement du DOS, ce qui serait plus gracieux à mon sens.

Cordialement, Joe.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ehjoe
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
17
3
Merci
Hello,

En vb6 il existe une technologie maintenant obsolète mais qui fonctionne à merveille pour faire communiquer deux applis en VB6. Il te faut utiliser les évènements DDE (Dynamic Data Echange et non Direction Départementale de l'équipement ).

Voici en cadeau un petit lien (in english of course!)

C'est pas très compliqué à mettre en place. Pour le reste tu n'auras qu'à envoyer des messages DDE pour chaque changement de statut de ton formulaire.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Mayzz
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
Bonjour,

Insuffisamment précis pour pouvoir te répondre.
Déjà : d'où veux-tu vérifier la chose ?
Car si depuis l'autre appli (pas celle en VB6), c'est dans son code, qu'il faut le faire.
Explique le problème avec clarté et précision.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Dernière intervention
29 juin 2013
0
Merci
Bonjour ucfoutu,
Il me semblait avoir été assez précis, mais si tu penses le contraire, je veux bien m'expliquer plus en détail, dis-moi ce qui te paraît flou.
C'est, bien sûr, dans mon appli VB6 que je souhaite détecter si celle-ci est active (à l'écran) ou bien icônisée (réduite) ou bien en second plan (derrière la seconde application).
Cette détection m'est nécessaire pour provoquer la création d'un fichier de liaison ou sa suppression.
Commenter la réponse de cs_jacques13
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
264
0
Merci
Je ne comprends pas. Si c'est depuis ton appli VB6 que tu veux vérifier la chose, c'est qu'elle est lancée et active (comment ton code de vérification pourrait-il "tourner" dans le cas contraire, puisque dans l'appli VB6 ? !)
A moins que par Active, tu ne veuilles dire autre chose (et quoi exactement) ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
252
Date d'inscription
mardi 3 juin 2003
Dernière intervention
29 juin 2013
0
Merci
Bonsoir à tous,
Jack, grâce à l'instruction 'GetForegroundWindow' je vais pouvoir détecter l'application active à l'écran. Il me reste le problème d'identifier avec précision le handle de l'appli hôte... Merci donc pour ton aide.
Joe, ton idée de mettre dans un fichier auxiliaire la valeur de WindowState est très intéressante, Merci.
Mayzz, Merci d'avoir proposé une solution via le DDE qui pourrait être élégante si la deuxième appli était aussi en VB6, mais ce n'est pas le cas.
En tout cas, merci à tous pour votre assistance.
Jacques13
Commenter la réponse de cs_jacques13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.