【问题标题】:Detecting HDMI cable event within .NET?在 .NET 中检测 HDMI 电缆事件?
【发布时间】:2018-05-09 18:24:13
【问题描述】:

当 HDMI 电缆从 .NET 框架内插入笔记本电脑的 HDMI 端口时,我正在尝试检测该事件。我知道触发了一个事件,因为当插入电缆时,Windows 会发出明显的“新硬件”声音并将屏幕分辨率更改为更合适的值。

我有点厌倦了手动将我的音频设备更改为 HDMI 输出,所以想编写一个小应用程序来为我做。

【问题讨论】:

  • Code Project 上的这篇文章提供了有关如何从 .NET 检查硬件并监听变化的很好的见解。

标签: c# windows


【解决方案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...");
            }
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2011-02-24
      相关资源
      最近更新 更多