Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie das Gerät zur Audiowiedergabe ändern?
Little Tester
myCSharp.de - Member



Dabei seit:
Beiträge: 118

Themenstarter:

Wie das Gerät zur Audiowiedergabe ändern?

beantworten | zitieren | melden

Es ist nur eine Kleinigkeit, aber es nervt mich mittlerweile doch.

Während mir tagsüber für YouTube und co die normalen Boxen genügen, höre ich abends gerne Musik mit meinem hochwertigeren Headset. Außerdem kann man da dann etwas lauter stellen ohne das die Nachbarn gestört werden.

Ich habe mir ja schon "Sound" aus der Systemsteuerung auf das Desktop gepackt, aber auch das ist mit mittlerweile zu aufwendig, weil es ja eigentlich auch schneller geht.

Ich würde mir gerne ein kleines Tool schreiben, dass ich einfach nur Doppelklicken muss und die Audiowiedergabe springt von der Realtek Onboard-Soundkarte auf mein Logitech-Headset, bzw. wieder umgekehrt. Wonach suche ich in C#, bzw. wie kann ich das anstellen? Geht doch sicher mit einer Hand voll Zeilen, oder?

Habe Visual Studio 2022 installiert.
Attachments
IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.171

beantworten | zitieren | melden

Das hat nichts mit C# oder .NET zu tun, sondern ist ein Feature von Windows.
Ich habe aber zwei Projekte dazu gefunden:
- Changing your Windows audio device programmatically using VC++ (Managed C++ bzw. C++/CLI)
- DefaultAudioChanger (da hat dir wohl jemand schon die Arbeit abgenommen, wenn auch mit C++)

PS: Nach "Hand voll Zeilen" sieht das aber alles nicht aus ;-) Außerdem scheint es dafür keine offizielle Schnittstelle von Windows aus zu geben und ist versionsabhängig (also keine Garantie, daß es mit der neuesten Windows-Version läuft).
private Nachricht | Beiträge des Benutzers
dannoe
myCSharp.de - Member



Dabei seit:
Beiträge: 192

beantworten | zitieren | melden

Unter Windows 10 kann ich, sofern ich mehrere Geräte angeschlossen habe, unter dem Sound Icon in der Taskbar einfach das Standardgerät wechseln.
Mein privater Rechner hat jetzt leider nur eins, aber ich habe im Screenshot die Stelle markiert, bei der ich es normalerweise wechseln kann.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von dannoe am .
Attachments
private Nachricht | Beiträge des Benutzers
Caveman
myCSharp.de - Member

Avatar #avatar-3854.jpg


Dabei seit:
Beiträge: 147

beantworten | zitieren | melden

Servus,

am einfachsten scheint mir das unter Verwendung des NuGet-Paketes CoreAudio realisierbar zu sein.
https://docs.microsoft.com/en-us/windows/win32/api/_coreaudio/ Die Dokumentation zur CoreAudioApi

Ein auf die Schnelle hingeschmierter Code:


using System;
using CoreAudio;

namespace AudioCore
{
    internal class Program
    {
        static MMDeviceCollection speakerList;
        static MMDevice activeSpeaker;


        static void Main(string[] args)
        {
            MMDeviceEnumerator deviceEnumerator = new();
            speakerList = deviceEnumerator.EnumerateAudioEndPoints(EDataFlow.eRender, DEVICE_STATE.DEVICE_STATE_ACTIVE);
            activeSpeaker = deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia);

            foreach (MMDevice device in speakerList)
            {
                Console.WriteLine(device.FriendlyName);
                Console.WriteLine(device.ID);
                Console.WriteLine("--");
            }

            SetDefaultAudioDevice();

            Console.ReadKey();
        }

        static void SetDefaultAudioDevice()
        {
            MMDeviceEnumerator deviceEnumerator = new();
            foreach (MMDevice device in speakerList)
            {
                if (!device.ID.Equals(activeSpeaker.ID))
                {
                    deviceEnumerator.SetDefaultAudioEndpoint(device);
                    break;
                }
            }
        }
    }
}
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15.480

beantworten | zitieren | melden

Neben der Standard Windows Funktion gibt auch bereits ein Tool dafür: EarTrumpet
Gibt auch GitHub auch hunderte Projekte, wo man sich anschauen kann, wie sowas funktioniert, zB GitHub - fredemmott/StreamDeck-AudioSwitcher: StreamDeck plugin for setting active audio devices
Handvoll Zeichen ist natürlich nicht.
private Nachricht | Beiträge des Benutzers
Little Tester
myCSharp.de - Member



Dabei seit:
Beiträge: 118

Themenstarter:

beantworten | zitieren | melden

Danke euch allen. Damit sollte mir weiter geholfen sein :-)
IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6
private Nachricht | Beiträge des Benutzers