Обнаружение события кабеля HDMI в .NET?

#c# #windows

#c# #Windows

Вопрос:

Я пытаюсь обнаружить событие, когда кабель HDMI подключен к порту HDMI моего ноутбука изнутри .NET framework. Я знаю, что происходит событие, потому что, когда кабель подключен, Windows издает очевидный звук «новое оборудование» и изменяет разрешение экрана на что-то более подходящее.

Я немного устал от ручного переключения моего аудиоустройства на выход HDMI, поэтому хочу написать небольшое приложение, которое сделает это за меня.

Комментарии:

1. эта статья о Code Project дает хорошее представление о том, как проверить ваше оборудование. Подключитесь к СЕТИ и прослушайте изменения.

Ответ №1:

Вы пробовали WM_DEVICECHANGE? У меня нет способа проверить это самостоятельно.

Если вы используете Winforms, вы можете переопределить Control.WndProc метод для обработки сообщений Windows, которые платформа не переносит.

Ответ №2:

Я очень удивлен, что здесь никто не упомянул о событиях DisplaySettingsChanging или DisplaySettingsChanged. Когда вы подключаете или отключаете кабель HDMI, o / s обнаруживает его для вас и перенумеровывает экраны. Вы можете перехватывать эти события.

Примером фрагмента кода может быть:

 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...");
        }

    }
}