Programm öffnen

  • Hallo, ich weiß quasi nichts über AutoIt,


    Gibt es eine einfache Möglichkeit wie AutoIt ein geöffnetes Programm unten aus der Taskleiste in den Vordergrund holt?

    Den Mauszeiger dorthin bewegen und draufklicken wäre sicher eine Möglichkeit, aber bestimmt gibt es Eleganteres.

  • Such mal im Forum (oben rechts) nach WinSetState(). Gibt diverse Beispiele. (@SW_MAXIMIZE wäre dann der richtige Parameter)

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:


    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Das ist so nicht richtig. @SW_Maximize maximiert das Fenster nur. Wenn es vorher im Hintergrund war bleibt es das auch trotz Maximierung.

    WinSetOnTop('Fenstername', "", 1) setzt es über alle anderen Fenster (dauerhaft), ggf. ist dann noch ein WinSetOnTop('Fenstername', "", 0) notwendig, wenn du es nur temporär nach vorne holen willst.

    Oder mit:


    Code
    _WinAPI_SetWindowPos(WinGetHandle("Fenstername"), $HWND_TOP, WinGetPos("Fenstername")[0], WinGetPos("Fenstername")[1], WinGetPos("Fenstername")[2], WinGetPos("Fenstername")[3], BitOR($SWP_FRAMECHANGED, $SWP_NOMOVE, $SWP_NOSIZE))
  • Stimmt, das mit @SW_MAXIMIZE war natürlich Blödsinn:Face:aber @SW_RESTORE sollte dann passen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:


    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Auch nicht wirklich:

    @SW_HIDE = Hide window
    @SW_SHOW = Shows a previously hidden window
    @SW_MINIMIZE = Minimize window
    @SW_MAXIMIZE = Maximize window
    @SW_RESTORE = Undoes a window minimization or maximization
    @SW_DISABLE = Disables the window
    @SW_ENABLE = Enables the window


    Wie gesagt ich würde es wohl so machen (das entscheidende hier ist das "$HWND_TOP"):

    AutoIt
    $WindowName = 'Title'
    $WinGetPos = WinGetPos($WindowName) ;[0]=X, [1]=Y, [2]=Width; [3]=Height
    _WinAPI_SetWindowPos(WinGetHandle($WindowName), $HWND_TOP, $WinGetPos[0], $WinGetPos[1], $WinGetPos[2], $WinGetPos[3], BitOR($SWP_FRAMECHANGED, $SWP_NOMOVE, $SWP_NOSIZE))

    Und zur Not ginge auch:

    Code
    $WindowName = 'Title'
    WinSetOnTop($WindowName, "", 1)
    WinSetOnTop($WindowName, "", 0)
  • kreativistanders Willkommen im Forum! :party1:


    Moombas Ich denke nicht, dass kreativistanders die Z-Order meinte.

    Gibt es eine einfache Möglichkeit wie AutoIt ein geöffnetes Programm unten aus der Taskleiste in den Vordergrund holt?

    Das hört sich eher danach an, dass er ein minimiertes Fenster restaurieren will. Auch sein nächster Satz lässt mich das vermuten:

    Den Mauszeiger dorthin bewegen und draufklicken wäre sicher eine Möglichkeit, aber bestimmt gibt es Eleganteres.

    Somit würde Micha_he 's Tip mit WinSetState($hWnd, "", @SW_RESTORE) passen. Aber was genau gemeint ist, weiß wohl nur kreativistanders. :Glaskugel:

  • Somit würde Micha_he 's Tip mit WinSetState($hWnd, "", @SW_RESTORE) passen.

    Sehe ich auch so... Moombas aufgezeigte Lösungen funktionieren zwar auch, verändern dabei jedoch die Z-Order, was hier aber gar nicht gefragt ist.

    Zitat von https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-showwindow
    SW_RESTORE 9 Activates and displays the window. If the window is minimized or maximized, the system restores it to its original size and position. An application should specify this flag when restoring a minimized window.
  • Naja, wohl alles eine Sache des Verständnisses.

    Für mich ist halt Vordergrund = nach vorne holen <> ein minimiertes Fenster wieder öffnen (Restore).

    "...unten aus der Taskleiste..." könnte zwar darauf hin deuten, da jedoch (fast) alle Programme sich in der Taskleiste befinden (und wenn alle Fenster maximiert sind, es nicht anders greifbar wäre), bin ich vom Wortlaut "... in den Vordergrund holt." ausgegangen.


    Aber sollte wirklich nur das Restore gemeint sein, ist die (2.) Lösung von Micha_he natürlich richtig.