2016-06-24 13 views
-3

Ich frage mich, ob es irgendwie möglich ist, mit Fenstern zu interagieren, die derzeit auf einem Windows-System geöffnet sind. Ich interessiere mich für einige ihrer Eigenschaften bekommen, nämlich:Interagieren mit Windows-Fenstern programmatisch

  • Ort
  • Dimension
  • ist im Hintergrund?
  • möglicherweise Fenstertitel

Vorzugsweise würde Ich mag, dass in Java tun, aber alle Vorschläge sind willkommen.

+1

Siehe: [1] (http://stackoverflow.com/questions/ 6091531/how-to-get-the-x-und-y-von-einem-Programm-Fenster-in-Java) [2] (http://stackoverflow.com/questions/11067484/get-titles-of- non-java-windows-in-java) [3] (http://stackoverflow.com/questions/31312793/why-does-my-call-to-winapi-getwindowplacement-fail-using-jna) – theB

Antwort

1

A comment von theB mit guten Ressourcen für Java verknüpft. Ich werde die relevanten Windows-APIs durchlaufen, falls Sie nativ mit C++ arbeiten möchten.

Um alle Top-Level-Fenster im System aufzuzählen, verwenden Sie EnumWindows10. Sie geben ihm eine Callback-Funktion mit der Signatur EnumWindowsProc, so dass er jedes Fensterhandle als ersten Parameter erhält.

Sie können die Fensterposition (in Bildschirmkoordinaten) und Abmessungen mit der GetWindowRect-Funktion abrufen. Übergeben Sie das Fenster, das Sie erhalten haben, und rufen Sie LPRECT (Zeiger auf RECT) auf.

Um festzustellen, ob ein Fenster maximiert ist, verwenden Sie GetWindowPlacement und überprüfen Sie das showCmd Feld der WINDOWPLACEMENT Struktur, die Sie erhalten.

Schließlich, um eine Fensterbeschriftung zu erhalten, verwenden Sie GetWindowText. (Nebenbei, wenn Sie den Text eines Steuerelements in einem anderen Prozess abrufen möchten, müssen Sie die Nachricht WM_GETTEXT selbst senden.)