1. #1
    Captain
    Dabei seit
    Dez 2007
    Ort
    Frankfurt a.M.
    Beiträge
    3.978

    [Anleitung] Schneller Soundgerätewechsel mit AutoIt


    Vorwort:

    Die Idee und Initiative dieser FAQ gilt dem User I N X S. Vielen Dank für eine sehr tolle Grundlage/Einführung in das Programm

    Übersicht:


    FAQ:

    Servus,

    wollte nur mal mein Wissen mit euch teilen, da ich ewig lang nach einem Tool gesucht habe, bei dem man in kürzester Zeit sein Standard Wiedergabegerät (Gerät auf dem standardmäßig alle Audiosignale wiedergegeben werden) wechseln kann.

    Hintergrund ist, dass ich mein PC-Lautsprechersystem über Klinke angeschlossen habe, meine Hifi Anlage digital über SPDIF und mein Headset ist über meine Logitech G110 angeschlossen.

    Dementsprechend werden alle 3 Wiedergabegeräte einzeln im Soundmenü angezeigt:

    <-- Von oben nach unten -> Lautsprecher, HiFi-Anlage, Headset


    Das Problem Nr 1:


    Ist es beispielsweise Abends, möchte ich über die Kopfhörer hören. Um dazu nicht jedesmal die Soundeinstellungen öffnen zu müssen, muss eine automatisierte Lösung zum Wechseln her.
    Neben Vista Audiochanger gibt es noch viele weitere Alternativprogramme, die mir aber leider allesamt nicht zugesagt haben.
    Also musste eine andere Lösung her.

    Die Idee:

    Man erstellt ein Makro ==> Eine fest vorgegebene Abfolge mehrerer "Arbeitsschritte" die der Computer ausführt

    Wenn man das Soundgeräte Fenster geöffnet hat, lassen sich die notwendigen Schritte alle per Tastatur ausführen. Möchte man zum Beispiel das Spdif Gerät auswählen, muss man zwei mal die Pfeiltaste [nach unten] drücken, den Knopf "Als Standard" kann man per [Tab] anwählen - die perfekte Vorraussetzung um ein Makro zu schreiben.

    Dieses Makro muss dann nur noch als ausführbare Datei (.exe) gespeichert werden, und der Soundgerätewechsel erfolgt komplett automatisch.

    Ich überlegte also, mit welchem Programm ich so ein Makro schreiben kann.


    Die Lösung:

    Nach einer Suche im Internet stieß ich auf folgendes Programm:
    AutoIt


    AutoIt kann z.b. Tastendrücke simulieren oder bestimmte Schaltflächen nach ihrem Status abfragen usw.


    Das Problem Nr. 2:

    Wie bei vielen Programmen, gibt es auch in den Soundeinstellungen das Problem der grau hinterlegten Schaltflächen. Diese lassen sich unter bestimmten Bedingungen nicht anklicken. Warum das ein Problem darstellt, versuche ich anhand des folgenden Beispiels zu erklären:
    Um von einer Schaltfläche hier auf "Als Standard" zu kommen muss 2 mal die [TAB] Taste gedrückt werden. Die Markierung springt dann von "Konfigurieren" auf "Als Standard" - perfekt.



    Doch ist jetzt die Schaltfläche "Als Standard" grau hinterlegt, Springt die Markierung von "Konfigurieren" auf "Eigenschaften". Da das Makro als nächsten Schritt die [ENTER] Taste drücken wird, würden wir bei den Eigenschaften landen - schlecht.



    Um solchen unvorhersehbaren Konstellationen entgegenzuwirken, muss irgendwie geprüft werden ob der Button "Als Standard" aktiv ist. Gleiches gilt natürlich für die Schaltfläche "Konfigurieren".



    Die Entwicklung des Makros:


    Die ersten Codezeilen sind recht einfach.
    Als erstes müssen die Soundeinstellungen geladen werden und warten bis diese geöffnet sind:

    Code:
    Run("c:\windows\system32\control.exe mmsys.cpl")
    WinWaitActive("Sound")
    Dann schicken wir eine beliebige Anzahl an "Pfeiltaste nach unten" um zu unserem gewünschten Wiedergabegerät zu navigieren. Für mich entspricht das genau einmal [DOWN], da das Wiedergabegerät an oberster Stelle steht:
    Code:
    send("{DOWN}")
    So jetzt müssten wir prüfen, ob das Feld "Konfigurieren" aktiv ist. Das könnte man mit einer "If Abfrage" machen. Die Funktion dazu heisst "ControlEnable"

    Nur wie fragen wir den Button genau ab?
    Dazu gibt es ein kleines Tool namens "WindowInfo" - zu finden im Installations Ordner (Bei Windows 7: C:\Program Files (x86)\AutoIt3\Au3Info.exe)





    Um die ID der entsprechenden Schaltfläche herauszufinden, klicken wir unter "Finder Tool" auf das Fadenkreuz und ziehen es auf den entsprechenden Button ("Konfigurieren"). Hier lassen sich jetzt einige Informationen entnehmen, unter anderem auch die Button-ID




    Um die ID zu entnehmen müssen wir folgendes anklicken:
    Registerkarte "Control" --> 6. von oben ist die ID
    Wir sehen, die ID ist 1001. Die Schaltfläche "Als Standard" hat hingegen die ID 1002, überrascht?


    Die fertigen Schritte in der Übersicht:

    • Soundfenster wird geöffnet
    • PC wartet, bis das Fenster offen ist
    • Pfeiltaste [NACH UNTEN] wird gedrückt
    • wir lassen prüfen, ob der Button "Konfigurieren" aktiv ist
      • wenn ja: [TAB] wird gesendet

    • wir lassen prüfen, ob der Button "Als Standard" aktiv ist
      • wenn ja: [TAB] + [ENTER] wird gesendet

    • Fenster wird geschloßen

    Wir fragen ab, ob der Button "Konfigurieren" aktiv ist, wenn ja, dann wird ein Tab gesendet um ihn zu markieren.
    Code:
    if ControlEnable("Sound", "", 1001) Then
        send("{TAB}")
    EndIf
    So und das gleiche nochmal für den Button "Als Standard". Wenn der Knopf aktiv ist, und das angewählte Soundgerät nicht schon das Standardgerät ist, werden 2 weitere Befehle gesendet: TAB und ENTER:
    Code:
    if ControlEnable("Sound", "", 1002) Then
        Send("{TAB}")
        Send("{ENTER}")
    EndIf
    Letztendlich wird das Fenster geschloßen
    Code:
    WinClose("Sound")
    Damit haben wir alle Schritte in unserem Makro gespeichert. Ich habe den vollständigen Code noch einmal hier unten notiert:

    Code:
    Run("c:\windows\system32\control.exe mmsys.cpl")
    
    WinWaitActive("Sound")
    
    send("{DOWN}")
    
    if ControlEnable("Sound", "", 1001) Then
        send("{TAB}")
    EndIf
    
    
    
    if ControlEnable("Sound", "", 1002) Then
        Send("{TAB}")
        Send("{ENTER}")
    EndIf
    
    WinClose("Sound")
    Die ganze Vorgehensweise könnt ihr für weitere Soundgeräte wiederholen und als einzelne Makros abspeichern (wie man nun ausführbare .exe Dateien erstellt, lest ihr am besten unten bei "Ergänzungen").

    Wenn ihr Anfragen nach individuellen Scripts habt, euch aber nicht zutraut sowas selbst zu schreiben, dann nehme ich das gerne als Herausforderung!


    Ergänzungen

    Wie oben schon beschrieben, sollte die Datei für eine einwandfreie Funktion als .exe gespeichert werden, damit diese als eigenständiges Programm arbeiten kann und nicht zusätzlich das Öffnen des AutoIt Editors benötigt --> Zeit- und Resourcenersparnis.

    Um eine fertig programmierte .au3 Datei in eine .exe Datei zu wandeln, muss in der Programierebene von AutoIt nur [F7] gedrückt werden. Eine ausführbare Exe wird im selben Ordner gespeichert, in welchem sich auch die .au3 Datei befindet.

    Zusätzlich empfiehlt es sich, alle Dateien in einem Ordner abzuspeichern, ich nannte diesen "Soundeinstellungen":

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Ordner - Soundeinstellungen.JPG 
Hits:	1052 
Größe:	120,3 KB 
ID:	222234
    Wenn in diesem Ordner dann die .exe Datei erstellt wurde, kann man per rechter Maustaste --> Senden an --> Desktop eine Verknüpfung auf dem Desktop erstellen, was natürlich nicht zwingend notwendig ist:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	2.jpg 
Hits:	791 
Größe:	224,7 KB 
ID:	222236


    Um nun eine Tastenkombination für ein Profil zu erstellen, wählt man rechte Maustaste --> Einstellungen auf die Verknüpfung:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Eigenschaften - 2.1 Stereo.jpg 
Hits:	800 
Größe:	60,9 KB 
ID:	222232

    In dem geöffneten Fenster kann nun einmal die gewünschte Tastenkombination eingegeben werden, sowie ein eigenes Icon gewählt werden, um das Shortcut optisch aufzuwerten:

    Klicke auf die Grafik für eine größere Ansicht 

Name:	Eigenschaften.JPG 
Hits:	899 
Größe:	65,6 KB 
ID:	222233


    Wer allerdings seine Verknüpfung mit einem .jpeg, .png etc. Foto aufwerten möchte, wird feststellen, dass die genannten Dateiformate nicht kompatibel sind.
    Auf dieser Seite ist es möglich, seine Lieblingsfotos in eine .ico Datei wandeln zu lassen.

    Fertiggestellt sieht das dann so aus:


    Über den Logitech Makro Manager, kann man nun die "G-Tasten" mit den zuvor festgelegten Tastenkombinationen belegen und bennenen.

    Gruß

    Kingfisher OK
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Klicke auf die Grafik für eine größere Ansicht 

Name:	Schaltfächen - Wählbar.JPG 
Hits:	728 
Größe:	15,7 KB 
ID:	222483   Klicke auf die Grafik für eine größere Ansicht 

Name:	Schaltfächen - nicht wählbar.JPG 
Hits:	508 
Größe:	14,2 KB 
ID:	222484  

  2. Anzeige
    Logge dich ein, um diese Anzeige nicht zu sehen.
  3. #2
    Captain
    Ersteller dieses Themas

    Dabei seit
    Dez 2007
    Ort
    Frankfurt a.M.
    Beiträge
    3.978

    [Anleitung] AW: [How To] Schneller Soundgerätewechsel mit AutoIt

    Dank dem User Haldi, der die Idee mit einem

    Code:
    ControlClick("Sound", "Als Standard", 1002)
    Befehl hatte, hat der User nixdagibts einen Code erstellt, der es ermöglicht mit einer einzigen ausführbaren Datei nacheinander zwischen den einzelnen Soundgeräten zu wechseln.

    Code [php]:
    Run("c:\windows\system32\control.exe mmsys.cpl")
    
    WinWaitActive("Sound")
    
    send("{DOWN}")
    send("{DOWN}")
    
    if ControlCommand("Sound", "", 1002, 'IsEnabled') Then
    	ControlClick("Sound", "Als Standard", 1002)
    else
    	send("{DOWN}")
        ControlClick("Sound", "Als Standard", 1002)
    EndIf
    
    WinClose("Sound")
    Die .exe Datei wird nach dem oben genannten Verfahren erstellt.

    Vielen Dank dafür!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •