Hallo,
ich starte in meinem Script mit Run() Microsoft Word. Danach wird ein kleines GUI mit einem Button ausgeführt.
Das erzeugt GUI soll eine zusätzliche private Funktion für Word bereitstellen. Nun möchte ich, dass das GUI immer links oben im Word-Fenster eerscheint und dort verbleibt, auch wenn ich das Word-Fenster verschiebe.
Ich habe schon mal mit Child/Parents - Styles probiert => Leider ohne Erfolg.
Hat irgendwer 'ne Idee. Ich habe momentan keinen vernüftigen Ansatz. Deshalb kann ich auch keinen bereits existierenden Code angeben.
MfG., AutoItler
Eigene GUI an ein gestartetes Programm "anheften" ...
-
AutoItler -
31. Mai 2017 um 17:26 -
Erledigt
-
-
Du kannst prüfen ob sich die Koordinaten verändert haben und dann verschieben, das ginge dann so:
AutoIt
Alles anzeigen$hGUI = GUICreate("", 100, 100) GUISetState() Local $aOldPos[2] While GUIGetMsg() <> -3 $aPos = WinGetPos("Dokument1") If $aPos[0] <> $aOldPos[0] or $aPos[1] <> $aOldPos[1] Then $aOldPos = $aPos WinMove($hGUI, "", $aPos[0] - 100, $aPos[1]) EndIf WEnd
Du könntest auch eine GUI drum legen (mit _WinAPI_SetParent) und diese zum verschieben nutzen,
dann kannst du dort die WM_MOVE Nachricht registrieren und weißt immer Bescheid wenn das Fenster verschoben wurde.Events für fremde Fenster direkt kann man glaube ich nicht registrieren.
-
- Offizieller Beitrag
Events für fremde Fenster direkt kann man glaube ich nicht registrieren.
Aber ja doch.
_WinAPI_SetWindowsHookEx ersetzt die Standard-Fenster-Prozedur und ein Callback wertet die WM_Messages aus oder verwirft diese oder läßt sie mit _WinAPI_CallNextHookEx an das System durch. Das geht mit allen Windows-Fenstern, die ihre Nachrichten in Windows-üblicher Weise abarbeiten.
-
Habe eine simple Lösung gefunden:
AutoItwhile 1 ; ... ; ... $_PosAcro = WinGetPos($_HandleAcroWin, "") ; <== Fenster Adobe Acrobat Reader WinMove($_GUI, '', $_PosAcro[0] + 6, $_PosAcro[1] + 5) ; <== Fenster des GUI ; ... ; ... wend
Auf diese Weise "schleicht" das GUI dem Acrobat-Fenster immer hinterher, wenn ich bewege ...
Vielen Dank allen, die mir hier mit Rat und Tat zur Seite standen.
Frohe Pfingsten ...
AutoItler -
Auf diese Weise "schleicht" das GUI dem Acrobat-Fenster immer hinterher, wenn ich bewege ...
Nimm lieber meine Lösung, überprüfe ob vorher die Koordinaten sich verändert haben und schiebe dann das Fenster.
Außerdem wäre ein Sleep(10) für die Schleife nicht verkehrt.