Question

Rédaction de scripts de test dans IronPython, je souhaite vérifier si une fenêtre est affichée ou non. J'ai le pid du processus de l'application principale et je souhaite obtenir une liste des titres de fenêtre liés au pid.

J'essayais d'éviter d'utiliser des appels win32api, tels que FindWindowEx, car (à ma connaissance), vous ne pouvez pas accéder à win32api directement à partir d'IronPython. Y a-t-il un moyen de faire cela en utilisant les classes .net intégrées? La plupart des choses que j'ai rencontrées recommandent d'utiliser win32api, comme ci-dessous.

. NET (C #): Obtenir des fenêtres enfants lorsque vous n’avez qu’un descripteur de processus ou un PID?

MISE À JOUR: j'ai trouvé un moyen de contourner ce que j'essayais de faire. Réponse ci-dessous.

Était-ce utile?

La solution

L'article ci-dessous montre comment accéder à win32api indirectement à partir d'IronPython. Il utilise la méthode CSharpCodeProvider CompileAssemblyFromSource pour compiler un assembly en mémoire à partir de la chaîne de code source C # fournie. IronPython peut ensuite importer l'assembly.

compilation dynamique de C # à partir d'IronPython

Autres conseils

Depuis IronPython 2.6, le module ctypes est pris en charge. Ce module fournit des types de données compatibles C et permet d’appeler des fonctions dans des DLL. Exemple rapide:

import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value

C'est comme si vous pouviez nager sans entrer dans l'eau. Si vous avez besoin d’informations à partir de Windows, la seule option est d’utiliser le win32api. Il y a beaucoup d'exemples à trouver sur la façon de le faire.

Si vous n'aimez pas cette réponse, laissez un commentaire dans votre question et je la supprimerai. Votre question restera donc dans la liste des questions sans réponse.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top