Eigenes Programm-Icon zur Laufzeit verändern

  • Hallo Forum

    Ich habe ein kleines compiliertes AutoIt Programm mit notepad++ und Aut2Exe.exe erstellt.
    Meine Frage: Kann ein fertig kompiliertes Programm 2 Icons beinhalten und je nach Bedingung zwischen ihnen wechseln während der Laufzeit?
    Und wenn ja, wie genau?


    Spoiler anzeigen
    [autoit]


    Run("c:\windows\system32\control.exe mmsys.cpl")

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

    WinWaitActive("Sound")

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

    send("{DOWN}")
    send("{DOWN}")

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

    if ControlCommand("Sound", "", 1002, 'IsEnabled') Then
    send("{TAB}")
    Send("{TAB}")
    Send("{ENTER}")
    else
    send("{DOWN}")
    send("{TAB}")
    Send("{TAB}")
    Send("{ENTER}")
    EndIf

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

    WinClose("Sound")

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

    Das Programm wechselt unter Win7 zwischen 2 Soundgeräten als aktive Ausgabe hin- und her.
    Jetzt möchte ich das Programm-Icon ändern, je nachdem welches Gerät aktiv ist.
    Die 2 Icons hätte ich schonmal :whistling:

    Allerdings kann ich beim Kompilieren immer nur 1 Icon angeben.

    Google versuche ich jetzt weiter die Antwort herauszukitzeln, glaube aber an wenig Erfolg, da die Frage recht speziell ist.
    PS: Das AutoIt Buch sagt lediglich, dass man 1 Icon angeben kann.

  • Ja weil du wärend der laufzeit nur das icon unten rechts ändern kannst.
    Also das im Tray.
    Das andere is ja sozusagen in der Exe und das kannste nicht ändern.
    Also das was du im Explorer siehst

  • Schade, dann klappt das so nicht.
    Das Programm startet, führt 1 Aktion aus und beendet sich wieder.

    Wie könnte ich denn dauerhaft darstellen, welches Gerät aktiv ist.
    Den Namen des Programms abändern vielleicht?
    Ich brauch Ideen jetzt :(

  • Das Icon einer Verknüpfung kannst du ändern. Die Exe eines gestarteten Programms kann nicht bearbeitet werden.

  • Du könntest dein Programm aber auch einfach dauerhaft aktiv lassen und dazu eine Endlosschleife einbauen. Das ganze dann in den Windows Autostart und Thema erledigt. Dann sollte es doch ausreichend sein das TrayIcon an den aktuellen Status anzupassen. Um zu switchen könntest du Hotkeys definieren oder beide Soundgeräte als Auswahl ins Traymenü packen.

    Spoiler anzeigen
    [autoit]


    Opt("TrayMenuMode",1) ; standard kram ist aus
    Opt("TrayAutoPause",0) ; Klick auf TrayIcon pausiert das Skript nicht
    $audioswitch = TrayCreateItem("Switch Audio")
    $exit = TrayCreateItem("Beenden")

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

    while 1
    $msg = TrayGetMsg()
    If $msg = $audioswitch Then switchaudio()
    If $msg = $exit Then Exit
    wend

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

    Func switchaudio()
    Run("c:\windows\system32\control.exe mmsys.cpl")

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

    WinWaitActive("Sound")

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

    send("{DOWN}")
    send("{DOWN}")

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

    if ControlCommand("Sound", "", 1002, 'IsEnabled') Then
    send("{TAB}")
    Send("{TAB}")
    Send("{ENTER}")
    ;TraySetIcon ( [filename [, iconID] )
    else
    send("{DOWN}")
    send("{TAB}")
    Send("{TAB}")
    Send("{ENTER}")
    ;TraySetIcon ( [filename [, iconID] )
    EndIf

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

    WinClose("Sound")
    EndFunc

    [/autoit]