Frage

einige Testskripte in Ironpython Schreiben, möchte ich, um zu überprüfen, ob ein Fenster angezeigt wird oder nicht. Ich habe die pid des Verfahrens der Haupt-App, und wollen eine Liste der Fenstertitel erhalten, die auf die pid verwandt sind.

Ich habe versucht, mit win32api Anrufe, wie FindWindowEx, da (meines Wissens) vermeiden Sie win32api direkt von Ironpython nicht zugreifen können. Gibt es eine Möglichkeit, dies mit Hilfe der integrierten in .net Klassen zu tun? Die meisten Sachen, die ich über gekommen sind empfiehlt win32api verwenden, wie unten.

. NET (C #): Erstes Kind Fenster, wenn Sie nur einen Prozesshandle oder PID haben

UPDATE: Ich fand eine Work-around zu dem, was ich versuche, zu tun. Antwort unten.

War es hilfreich?

Lösung

Der folgende Artikel zeigt, wie der win32api von Ironpython indirekt zuzugreifen. Es verwendet CSharpCodeProvider CompileAssemblyFromSource Verfahren eine Baugruppe in einem Speicher aus dem zugeführten C # Quellcode Zeichenfolge zu kompilieren. Ironpython kann dann die Baugruppe importieren.

Dynamisch C # von Ironpython Kompilieren

Andere Tipps

Wie von Ironpython 2.6 das ctypes Modul wird unterstützt. Dieses Modul bietet C kompatible Datentypen und ermöglicht Funktionen in DLLs aufrufen. Schnell Beispiel:

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

Es ist wie zu fragen, ob Sie ohne Umweg in das Wasser schwimmen können. Wenn Sie Informationen aus den Fenstern benötigen, ist die einzige Option, um die win32api zu verwenden. Es gibt viele Beispiele zu finden, wie dies zu tun.

Wenn Sie nicht über diese Antwort mögen, lassen Sie einfach einen Kommentar in Frage und ich werde diese Antwort entfernen, damit Ihre Frage wird in der offenen Fragen Liste bleiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top