Fremde Fenster und Taskleiste

  • Erst einmal ein herzliches Hallo an alle.


    Kurz und bündig: Wollte ein paar Sachen auf meinem Rechner automatisieren, AutoIt gefunden, eingearbeitet, zufrieden, Fragen gehabt, ins Forum geschaut, Antwort gefunden, begeistert!


    Und da es hier im Forum ja immer schnelle Antworten gibt, hoffe ich, dass Ihr mir zwei Fragen beantworten könnt, zu denen ich noch keine Lösung gefunden habe.


    1. Run von fremden Fenstern.

    Ich möchte gerne einen Autostarter haben, der bestimmte Programme "der Reihe nach" lädt.

    Um nach jedem Aufruf von run("...") auch einen WinWaitActivate ausführen zu können, muss ich ja den Fensternamen oder ähniches wissen.

    Jetzt möchte ich das Programm aber so flexibel gestalten, dass man sich weitere Programme zu dieser Liste hinzuklicken kann, die dann beim nächsten Autostart geladen werden. Von diesen Programmen kenne ich evtl. die Fenstertitel vorher ja nicht.

    Gibt es da nicht so eine Funktion wie z.B.: Wie lautet der Name des Fensters, das gerade per run("") gesartet wurde?


    2. Task in Taskleiste ausblenden

    Wie man den Task des eigenen AutoIt-Programms ausblendet weiß ich schon.

    Nun möchte ich aber den Taskbutton von WindowsLiveMail entfernen und nur noch als Icon im Tray haben.

    Könnt Ihr mir dazu auch helfen?


    Ich bin schon gespannt.

    Schönen Gruß

    Michael B.

  • Zu Problem 1:

    Spoiler anzeigen
    [autoit]

    $PID = Run("notepad.exe")
    ProcessWait($PID)
    $var = WinList()

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

    For $i = 1 To $var[0][0]
    If $var[$i][0] <> "" And WinGetProcess($var[$i][0]) = $PID Then
    $titel = $var[$i][0]
    $handle = WinGetHandle($var[$i][0])
    MsgBox(0, 1, "Fenstername : " & $titel & @CRLF & "Fensterhandle (zum Weiterarbeiten) : " & $handle & @CRLF & "ProzessID : " & $PID)
    WinSetState($handle, "", @SW_MAXIMIZE)
    Exit
    EndIf
    Next

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

    Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible

    [/autoit]


    Nun kannst du mit dem Handle des Fensters (unabhängig von dem Namen) das Fenster manipulieren!
    //Edit: Nochmals um 2 Zeilen reduziert ;)

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • 2. Task in Taskleiste ausblenden

    Wie man den Task des eigenen AutoIt-Programms ausblendet weiß ich schon.

    Nun möchte ich aber den Taskbutton von WindowsLiveMail entfernen und nur noch als Icon im Tray haben.

    Könnt Ihr mir dazu auch helfen?

    Schon mal WinSetState("Titel","",@SW_HIDE) probiert?