Frage

Wie kann ich in Perl, wenn ich HWND eines Fensterobjekts habe, mit diesem Handle zu Zugriff auf dieses COM -Objekt? Ich schaute mir Win32 :: Ole an, aber das, was ich am nächsten kam, war die GetActiveObject Methode, die eine Klasse erwartet.

War es hilfreich?

Lösung

Es gibt keinen Standard, um einen COM -Schnittstellenzeiger von einem HWND zu erhalten, da ein Fenster kein COM -Objekt ist. Die grundlegende Windows -API, einschließlich Fenstergriffe, ist vor der Erfindung von OLE und COM. Die Implementierung eines bestimmten Fensters kann einige oder alle seiner Funktionalität über COM-Schnittstellen aufdecken, diese Schnittstellen sind jedoch anwendungsspezifisch.

Wenn dokumentiert wird, dass das Fenster, das Sie steuern möchten, eine öffentliche COM -Schnittstelle enthüllt, werden Sie auch mit der Dokumentation dieses Fensters erfahren, wie Sie das Fenster für einen Schnittstellenzeiger abfragen. Höchstwahrscheinlich erfordert es das Senden eines anwendungsspezifischen Sendens Fensternachricht.

Andere Tipps

Holen Sie sich einen HWND oder Ort aus einem zugänglichen Objekt und manipulieren Sie es mit der Windows -API:

use Win32::GuiTest;

Verwenden Sie ein HWND

my $hwnd = $ao->WindowFromAccessibleObject();
my $name = Win32::GuiTest::GetWindowText($hwnd);

Wenn Sie von einem HWND die iAccessible Schnittstelle erhalten möchten, können Sie versuchen, es zu verwenden Wm_GetObject (Hinweis: Ich nehme an, es gibt irgendwie, um Fenstermeldungen in Perl zu senden - es ist gut bekannt, dass ich kein Perl -Wissen habe).

Nicht jeder macht es so, also stellen Sie sicher, dass Sie irgendwie mit dem Fehler umgehen. Zum Beispiel exponiert Internet Explorer Wm_html_getObject Um den Zeiger iHtmldocument2 Zeiger zu bekommen.

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