sysprep.exe Fenster verschieben

  • Hallo zusammen,

    ich möchte das Fenster von sysprep.exe verschieben:

    Spoiler anzeigen
    Spoiler anzeigen

    Je nach System, hat das Fenster einen Deutsche oder englischen Name und in seltenen Fällen auch andere Sprachen.

    Ich kann das Fenster aber via Autoit nicht ansprechen und es verschieben.

    Das Fenster der Sysprep.exe soll zum unten linke Bildschirmrand verschoeben werden (Die Auflösungen der Rechner ist unterschiedlich) und ein weiteres Fenster (WindowsActive), am oberen rechten Bildschirmrand.

    Die Sysprep kann ich weder mit [CLASS: ansprechen noch generell mit dem Name... auch nicht via ID.

    Kann da jemand Aushelfen?

    Die Sysprep ist zu finden (WINDOWS+R > sysprep > Enter)

    LG

    Einmal editiert, zuletzt von Sumale.my (7. August 2016 um 19:06)

  • Du kannst doch eine Kombination aus CLASS:#32770 und Text verwenden. Du benötigst einen Textausschnitt, der bei allen von dir zu betreuenden Computer vorkommt. Ich gehe davon aus dies ist "(Sysprep)". Daraus ergibt sich folgende Lösung:

    Code
    $Hwnd = WinGetHandle('[CLASS:#32770]','(Sysprep)')
    MsgBox(64, 'Sysprep', 'Hwnd: ' & $Hwnd)

    sollte dies bei dir nicht gegegeben sein, mußt du in einem Array das jeweilige Suchwort zusammen mit der Ländersprache abspeichern und dementsprechend das Skript anpassen.

    mfg (auto)Bert

  • kannst Du mir eventuell ein lauffähiges Beispiel schreiben?

    dieses Beispiel ist lauffähig:

    vorausgesetzt"(Sysprep)" kommt als Text vor. Ich habe leider nur dieses 1 System und kann daher nicht alle möglichen Sprachen überpüfen. Du mußt also alle Ausnahmen ["(Sysprep)" kommt nicht im Text vor} im Array definieren.

    2 Mal editiert, zuletzt von autoBert (10. August 2016 um 09:39) aus folgendem Grund: Fehler im Skript korrigiert.

  • Vielen Dank dafür !!!!
    Genau wie ich mir das vorgestellt habe. Das hätte ich vorerst so nicht hinbekommen.
    Wäre es auch möglich, zusätzlich ein zweites Fenster, Namens "WindowsActive" nach links oder oben rechts zu verschieben?

    Edit:
    Ich habe das ganze nun in meinem Script eingefügt. Es soll ja nur ausgeführt werden, wenn sysprep.exe auch aktiv ist. Ich habe mir dazu folgende Abfrage eingebaut:

    Und die Funktion:

    Jetzt ist es so, wenn die sysprep.exe aktiv ist, wird mein Script (GUI) geladen und das Sysprep Fenster verschoben. Wenn die Sysprep.exe allerdings nicht aktiv ist, dann schließt sich mein GUI sofort wieder :(

    Hier gerne auch mal mein gesamtes Script. Eventuell hat jemand generell Vorschläge.

    Spoiler anzeigen

    6 Mal editiert, zuletzt von Sumale.my (13. August 2016 um 01:06)

  • Wäre es auch möglich, zusätzlich ein zweites Fenster, Namens "WindowsActive" nach links oder oben rechts zu verschieben?

    Ja sicher doch... du kannst so ziemlich alle Fenster verschieben, insofern es 'echte Fenster' sind, die von Windows erzeugt wurden. Dazu brauchst du lediglich die korrekten Werte, damit es eindeutig identifiziert werden kann.
    Fenster haben allerdings keinen Namen, sondern einen Titel und eine Klasse - und Instanzen.

    WinWait("classname=Systemvorbereitungsprogramm 3.14")

    So geht das allerdings nicht... in der Hilfe findest du zahlreiche Beispiele dafür, wie es richtig gemacht wird: Window Titles and Text (Advanced)

    >>>> Window <<<<
    Title: Systemvorbereitungsprogramm 3.14
    Class: #32770

    Hier steht es doch... erstens steht dort nicht "classname=", sondern "Class:", zweitens willst du dem System einen Fenstertitel als Klasse andrehen... sooo kann das natürlich nicht funktionieren!
    Desweiteren musst du diese speziellen Tags in [ ] setzen...

    AutoIt
    WinWait("[TITLE:Systemvorbereitungsprogramm 3.14]")
    ;
    ; so ist besser... je mehr Angaben, umso sicherer ist es, dass wir das richtige Fenster erwischen.
    WinWait("[TITLE:Systemvorbereitungsprogramm 3.14; CLASS:#32770]")
    ;
    ; so ginge es, wenn es mehre Fenster mit gleichem Titel und Klasse gibt...
    WinWait("[TITLE:Systemvorbereitungsprogramm 3.14; CLASS:#32770; INSTANCE:2]")

    Einmal editiert, zuletzt von Bitnugger (13. August 2016 um 02:02)

  • Danke für die Antworten.

    Das andere Fenster hat die gleiche Class wie das Sysprep. Dieses nennt sich aber "WindowsActive" und ist nicht Abhängig von der OS-Sprache.
    Für weitere Hilfe wäre ich dankbar.

    So geht es leider nicht:

    AutoIt
    $Hwnd = WinGetHandle('[CLASS:#32770]','WindowsActive')
    $aPos=WinGetPos($Hwnd)
    WinMove($Hwnd,'',@DesktopWidth-$aPos[2],@DesktopHeight-$aPos[3]-(@DesktopHeight-267))

    Auch wenn ich ein Winwait davor packe, funktioniert das nicht. Generell, wenn das Fenster schon offen ist und ich das Script starte, wird mit gesagt das es einen Fehler sub...-Fehler gibt. Ist das Fenster zu, gibt es keinen Fehler, aber dasd Fenster wird auch nicht verschoben.
    LG

  • $Hwnd = WinGetHandle('[CLASS:#32770]','WindowsActive')

    In der Hilfe steht:

    WinGetHandle ( "title" [, "text"] )

    Du suchst also ein Fenster mit der Klasse '#32770' und dem Text 'WindowsActive'?

    Wenn ich dich aber richtig verstanden habe, ist 'WindowsActive' der Titel.

    Dann sollte dein Befehl so aussehen:

    AutoIt
    $hWnd = WinGetHandle('[CLASS:#32770; TITLE:WindowsActive]')

    2 Mal editiert, zuletzt von Bitnugger (19. August 2016 um 03:46)