From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, 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

cancel
Showing results for 
Search instead for 
Did you mean: 

Liste des fenêtres windows ouvertes

Solved!
Go to 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 Kudos
Message 1 of 3
(2,789 Views)

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 Kudos
Message 2 of 3
(2,760 Views)
Solution
Accepted by topic author 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 of 3
(2,751 Views)