Hallo,
ich habe ein Problem mit dem Öffnen mehrerer (fast) gleicher Fenster aus ein und demselben Programm heraus.
Es geht um das hier vielleicht bekannte Bildbearbeitungsprogramm "GIMP".
1. Ich möchte:
daß in GIMP alle Bildfenster, die nach dem Öffnen einer Datei aufgemacht werden,
die gleiche Größe haben und sich an der gleichen Position befinden, sozusagen deckungsgleich sind.
2. Es soll aber trotzdem möglich sein, Position und Größe jedes der Fenster
mit Maus und Tastatur zu ändern (also ganz normale Fenstermanipulation).
3. Laut "AutoIt v3 Window-Info" ist der Titel der Fenster immer verschieden,
enthält jedoch immer die Zeichenfolge " - GIMP".
Die Class der Fenster ist immer gleich: "gdkWindowToplevel".
Jedes der Fenster enthält den "visible text": "GNU Image Manipulation Program".
Ich hab schon ewig herumexperimentiert, aber ich weiß nicht wie das geht.
Kann mir jemand helfen?
Hallo,
inzwischen habe ich mit viel Mühe das hier hinbekommen:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.2.12.1
Author:
Script Function: "GIMP" starten und Fensterposition geöffneter Dateien festlegen
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]; Aufruf des erweiterten Modus für Fenstertitel
;(gültig fürs gesamte Skript?)???????
AutoItSetOption("WinTitleMatchMode", 4)
; AutoIt-TaskleistenIcon ausblenden
#NoTrayIcon
; GIMP starten
Run("gimp-2.6.exe")
; Skript anhalten, bis das Fenster ("", "") existiert
WinWait("Werkzeugkasten")
While 1
[/autoit] [autoit][/autoit] [autoit]; der Variablen ($var) den Wert
; WinList("... - GIMP", "GNU Image Manipulation Program") zuweisen
$var = WinList("[REGEXPTITLE:[^Info zu].+[ \- ]GIMP]", "GNU Image Manipulation Program")
For $i = 1 to $var[0][0]
; Only display visble windows that have a title
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then ;????????
; Das Fenster ("", "") verschieben und dessen Größe festlegen
WinMove("[REGEXPTITLE:[^Info zu].+[ \- ]GIMP]", "GNU Image Manipulation Program", 169, 0, 893, 771)
EndIf
Next ;????????
; Wenn das Fenster ("", "") nicht existiert, dann den Prozess ("AutoIt3.exe") beenden
If Not WinExists("Werkzeugkasten") Then
ProcessClose("AutoIt3.exe")
EndIf
; Skript-Ausführung für 500 ms anhalten
Sleep(500)
WEnd
[/autoit] [autoit][/autoit] [autoit]Func IsVisible($handle) ;????????
If BitAnd( WinGetState($handle), 2 ) Then ;????????
Return 1 ;????????
Else ;????????
Return 0 ;????????
EndIf
EndFunc
[/autoit]Soweit erfüllt das schon mal seinen Zweck.
Nur läßt sich leider die Größe der Fenster wie oben unter 2. beschrieben, nicht verändern.
Das mag an der "While-Schleife" liegen?
Außerdem wird jedes Fenster nach dem Öffnen zuerst in die Taskleiste minimiert, was so nicht sein soll.
Mein Betriebssystem: Windows XP Home Edition
Für Hilfe bin ich dankbar.
MfG Osterhase