Anzeige im Systray welches Audiogerät gerade gewählt ist

  • Moin,

    ich habe keine Ahnung von autoit, abgesehen davon, dass ich es immerhin geschafft habe, ein fertiges Skript so anzupassen, dass es auf meinem PC bei ein paar mehr Audiogeräten als beim Originalskript vom analogen Ausgang der Soundkarte auf den digitalen umschaltet und wieder zurück. Das zur Vorgeschichte ;)

    Was ich jetzt noch bräuchte, wäre eine Anzeige, ob gerade der analoge oder der digitale Ausgang gewählt ist. Ich würde mir einen farbigen Punkt im Systray oder so vorstellen (z.B. rot für analog und grün für digital oder so). Mein Umschalt-Skript legt bei Auswahl des analogen Ausgangs eine txt-Datei an, damit man ein Kriterium hat, welcher Ausgang gerade gewählt ist. Das könnte man also als Bedingung nehmen.

    Kann mir da jemand helfen?


    Gruß

    Matthias

    Einmal editiert, zuletzt von M@tthi@s (27. Juni 2009 um 21:19)

  • Wird die Datei wieder gelöscht wenn der digitale Ausgang gewählt wird?

    [autoit]

    If FileExists(...) Then
    TraySetIcon('Grün.ico')
    Else
    TraySetIcon('Rot.ico')
    EndIf

    [/autoit]


    Das ist aber bestimmt besser ins Skript einzufügen, wenn du es nicht über diese Datei machst, aber ich kenne dein Skript nicht.

  • Wird die Datei wieder gelöscht wenn der digitale Ausgang gewählt wird?

    [autoit]

    If FileExists(...) Then
    TraySetIcon('Grün.ico')
    Else
    TraySetIcon('Rot.ico')
    EndIf

    [/autoit]


    Das ist aber bestimmt besser ins Skript einzufügen, wenn du es nicht über diese Datei machst, aber ich kenne dein Skript nicht.


    Ja, die Datei wird wieder gelöscht, wenn der Digitalausgang gewählt wird.


    Das ist das Skript:


    [autoit]

    #include <file.au3>
    ;Soundeinstellungen aufrufen
    Run("control mmsys.cpl")
    ;warten bis das Fenster geöffnet wurde
    WinWaitActive("Sound")
    ; Auswahl von Analog- oder Digitalgerät
    if FileExists("C:\Temp\analog_active.txt") Then
    FileDelete("C:\Temp\analog_active.txt")
    Send("{DOWN 4}")
    Else
    _FileCreate("C:\Temp\analog_active.txt")
    Send("{DOWN 2}")
    EndIf
    ; Zur Schaltfläche "Als Standard"
    if FileExists("C:\Temp\analog_active.txt") Then
    Send("{TAB 2}")
    Send("{ENTER}")
    Else
    Send("{TAB 1}")
    Send("{ENTER}")
    EndIf
    ; Und das Fenster mit OK schließen
    Send("{TAB 2}")
    Send("{ENTER}")
    ;warten bis das Fenster geschlossen wurde
    WinWaitClose("Sound")
    ;Script beenden
    Exit

    [/autoit]


    Ich probier's mal aus - danke.

  • So, das sieht jetzt so aus:


    [autoit]

    If FileExists("C:\Temp\analog_active.txt") Then
    TraySetIcon('C:\@service\Skripte\283.ico')
    Else
    TraySetIcon('C:\@service\Skripte\284.ico')
    EndIf

    [/autoit]


    Es tut sich auch was im Systray, allerdings ist das Symbol so schnell wieder weg, dass man es kaum sieht. Wie bringe ich es dazu, dort sichtbar zu bleiben?

  • Einfach eine Schleife bilden. So wird alle 2 Sekunden überprüft, ob die Datei existiert, und je nachdem das Icon gewählt. Programm wird über das TrayIcon beendet, oder du definierst dir einen Hotkey.

    Spoiler anzeigen
    [autoit]

    While 1
    If FileExists("C:\Temp\analog_active.txt") Then
    TraySetIcon('C:\@service\Skripte\283.ico')
    Else
    TraySetIcon('C:\@service\Skripte\284.ico')
    EndIf
    Sleep(2000)
    WEnd

    [/autoit]