WinSetState bei Windows 7

  • Hallo,

    ich habe Windows 7 (64Bit) und würde gerne nach dem systemstart einige fenster minimieren.
    doch leider reagiert keines der fenster auf die anweisungen von winsetstate (minimize, show, hide).

    Fenster werden mit winwait gefunden, danach habe ich sowhl den rückgabewert von winwait, als auch weiter den fensternamen verwendet (winwait ist also erfolgreich). winsetstate liefert auch den rückgabewert 1, ist also theoretisch auch korrekt ausgeführt worden.

    ich kann mir nur erklären, dass es am verhalten von windows 7 liegt ... aber wieso? und was kann man machen, damit das auch wieder geht?

    ich will ja nur was simples haben =/

  • Hi,

    also folgendes funktioniert bei mir einwandfrei ... ;)

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit][autoit][/autoit][autoit]

    Global $hwnd, $ret

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    $hwnd = WinWait ("- Mozilla Firefox")
    ConsoleWrite ("--- hwnd = "&$hwnd & @CRLF)

    [/autoit][autoit][/autoit][autoit]

    $ret = WinSetState ($hwnd, 0, @SW_MINIMIZE)
    ConsoleWrite ("--- ret = "&$ret & @CRLF)

    [/autoit][autoit][/autoit][autoit][/autoit]


    Greenhorn


  • Hiho,

    leider muss ich den alten thread nochmal rausholen.
    der oben genannte tip hatte ja kurzzeitig zumindest beim windows mobile gerätecenter funktioniert ... nun geht aber aber wieder nicht (und beim Process Explorer ging er nie).

    kann jmd eine lösung bieten, warum ich bei win 7 64bit nicht alle fenster mit autoit ansprechen kann? von denen, dich ich ansprechen will, funktioniert so gut wie kein (windows mobile gerätecenter, truemounter, outlook pw-abfrage, firefox pw-abfrage, process explorer, kurznotitzen). hiervon kann ich weder ein fenster minimieren, noch maximieren, noch on top setzen. nicht, wenn ich das script in scite ausführe, noch wenn ich es kompiliere (x86 oder x64) und requireadmin macht auch keinen unterschied. auch über die winapi-funktionen ist dies nicht möglich.

    besten dank für jeden tip.

  • Hi,

    also bei mir funktioniert es immer noch ... ;)
    (Win7 x64)

    Spoiler anzeigen
    [autoit]


    Opt("WinTitleMatchMode", 2)

    [/autoit] [autoit][/autoit] [autoit]

    Global $hwnd, $ret

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite ("- Fensterhandle ermitteln" & @CRLF)
    $hwnd = WinWait ("Process Explorer - ")
    ConsoleWrite ("--- Rückgabe WinWait : "&$hwnd & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite ("- Minimieren" & @CRLF)
    $ret = WinSetState ($hwnd, 0, @SW_MINIMIZE)
    ConsoleWrite ("--- Rückgabe WinSetState : "&$ret & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (500)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite ("- Wiederherstellen" & @CRLF)
    $ret = WinSetState ($hwnd, 0, @SW_RESTORE)
    ConsoleWrite ("--- Rückgabe WinSetState : "&$ret & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (500)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite ("- Maximieren" & @CRLF)
    $ret = WinSetState ($hwnd, 0, @SW_MAXIMIZE)
    ConsoleWrite ("--- Rückgabe WinSetState : "&$ret & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep (500)

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite ("- Wiederherstellen" & @CRLF)
    $ret = WinSetState ($hwnd, 0, @SW_RESTORE)
    ConsoleWrite ("--- Rückgabe WinSetState : "&$ret & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Exit (0)

    [/autoit]


    Ausgabe

    Spoiler anzeigen

    Gruß
    Greenhorn


    Einmal editiert, zuletzt von Greenhorn (15. September 2010 um 01:45)

  • danke dass du nochmal getestet hast ... das ist meine Rückgabe:

    [autoit]

    - Fensterhandle ermitteln
    --- Rückgabe WinWait : 0x000305EE
    - Minimieren
    --- Rückgabe WinSetState : 1
    - Wiederherstellen
    --- Rückgabe WinSetState : 1
    - Maximieren
    --- Rückgabe WinSetState : 1
    - Wiederherstellen
    --- Rückgabe WinSetState : 1

    [/autoit]

    sieht soweit ganz gut aus, aber die funktionen wurden mir vorher auch schon als korrekt ausgeführt übermittelt.das problem ist aber, dass das fenster sich trotzdem nicht rührt, kein minimieren, kein maximieren und somit auch kein restore =(

  • Ich weiß, der Thread ist alt, aber er ist ja immer noch offen, und ich habe eine Lösung, die zumindest bei mir funktioniert: Das Problem war, daß unter "Bildschirmauflösung" eine "benutzerdefinierte Textgröße" eingestellt war. Das hatte zur Folge, daß AutoIt die Bildschirmauflösung nicht korrekt erkannte (die Makros @DesktopWidth und @DesktopHeight lieferten auch falsche Ergebnisse).

    Damit AutoIt die Bildschirmauflösung richtig erkennt, muß unter "benutzerdefinierte Textgröße" die "DPI-Skalierung im Stil von Windows XP" aktiviert sein. Dann funktioniert auch @SW_MAXIMIZE.

    Ich hoffe, das hilft auch anderen.