From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Discussions au sujet de NI LabVIEW

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Liste des fenêtres windows ouvertes

Résolu !
Accéder à la solution

Bonjour à tous(tes) et merci pour l'aide que vous pouvez m'apporter

Existe-t-il un moyen de lister par programmation toutes les fenêtres ouvertes dans windows?

 

Pour expliquer ma problématique, j'ai une aplication qui tourne en parrallèle d'un  logiciel qui dans certain cas ouvre une fenetre pop up. Je voudrais lancer une action uniquement quand cette pop up est ouverte.

 

Merci encore pour votre aide

 

 

0 Compliments
Message 1 sur 3
2 780 Visites

Bonjour Sentenza

 

Pour avoir déjà tenté, c'est assez complexe à faire bien. Deux solutions, une facile dans un cas particulier et une moins facile dans le cas général.

 

Si le pop-up est un process indépendant, il y a une solution en .NET assez facile à traduire en LabVIEW que j'ai trouvé ici :

https://stackoverflow.com/questions/7268302/get-the-titles-of-all-open-windows

 

Par contre, pour vraiment récupérer la liste des fenêtres ouvertes, peu importe leur process d'appartenance, il faut alors s'intéresser à la fonction EnumDesktopWindows de la dll user32.dll :

https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-enumdesktopwindows

 

Malheureusement, les codes d'exemples ne sont pas en LabVIEW, et l'utilisation d'une fonction de l'API Windows par expérience nécessite pas mal de travail pour adapter les types des paramètres.

 

Du coup, j'en arrive à la solution que je choisirais de mon côté : développer un petit exécutable en C qui fasse la vérification pour moi que je puisse appeler en ligne de commande et qui me renvoie l'information de cette manière. ça permettrait de directement utiliser les exemples de la fonction EnumDesktopWindows sans avoir à traduire en LabVIEW.

 

Thomas



0 Compliments
Message 2 sur 3
2 751 Visites
Solution
Accepté par Sentenza

Bonjour Thomas,

Merci pour ta réponse. Effectivement de ce point de vu cela n'as pas l'air d'être simple.

En ce qui concerne ma problématique j'ai trouvé une solution en fouillant un peu avec un .vi qui permet de mettre une fenêtre au premier plan et de donner ce qu'ils apel le "handle" si la fenêtre n'est pas ouverte il retourne zéro

Ce que j'ai fait c'est checker si la fenêtre en question était ouverte.

 

J'ai mis ce vi en lien pour ceux qui serait inétessé!!

 

Voila merci encore

Message 3 sur 3
2 742 Visites