c # - Registrering af HDMI-kabelbegivenhed inden for .NET?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at registrere begivenheden, når et HDMI-kabel er tilsluttet til min bærbare pcs HDMI-port fra inden for .NET-rammen. Jeg ved, at der er en begivenhed, der udløses, fordi når kablet er tilsluttet, gør Windows det indlysende 'new hardware' lyd og ændrer skærmopløsningen til noget mere egnet.


Jeg bliver lidt træt af at have ændringen, min lydenhed til HDMI-output med hånden, så vil du skrive en lille app til at gøre det for mig.

Bedste reference


denne artikel på Code Project giver et godt indblik i, hvordan du tjekker din hardware fra .NET og lytter til ændringer. [3]

Andre referencer 1


Har du prøvet WM\_DEVICECHANGE? Jeg har ikke mulighed for at teste det selv. [4]


Hvis du bruger Winforms, kan du tilsidesætte Control.WndProc metoden til at håndtere Windows-meddelelser, at rammen ikke wrap.

Andre referencer 2


Jeg er meget overrasket over, at ingen her nævnte om DisplaySettingsChanging eller DisplaySettingsChanged events. Når du tilslutter eller slukker et HDMI-kabel, registrerer o/s det for dig og genkalder skærme. Du kan fange de pågældende begivenheder.


Et eksempel stykke kode ville være:


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)        
        {

            Microsoft.Win32.SystemEvents.DisplaySettingsChanged += SystemEvents\_DisplaySettingsChanged;

            Microsoft.Win32.SystemEvents.DisplaySettingsChanging += SystemEvents\_DisplaySettingsChanging;

            Console.Read();
        }

        static void SystemEvents\_DisplaySettingsChanged(object sender, EventArgs e)
        {
            Console.WriteLine("Display settings have been changed.");
        }

        static void SystemEvents\_DisplaySettingsChanging(object sender, EventArgs e)
        {
            Console.WriteLine("Display settings are changing now...");
        }

    }
}