c# - 检测何时连接新显示器

标签 c# winforms

我正在编写一个需要两个显示器的应用程序:一个用于控制面板,另一个用于输出。我所拥有的是:如果只有一个显示器,应用程序会在其上显示两种形式,但如果有两个,则输出形式会转到另一个。 问题是这只会在应用程序启动时发生。换句话说,如果在连接第二个显示器之前应用程序已经在运行,则除非用户手动将输出发送到新显示器(假设他们知道如何操作),否则什么也不会发生。 我想要的是,当连接新显示器时,即使应用程序正在运行,输出表单也会自动发送给它。我认为这与轮询线程中的端口有关,但我不知道该怎么做。任何人都可以帮助如何做到这一点?如果有更好的解决方案,我会很乐意接受。

(我会提供部分代码,但我是通过手机输入的)

最佳答案

看这里:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.wndproc.aspx

有一个示例应该对您有所帮助。尝试这样的事情:

protected override void WndProc(ref Message m) 
{
    const uint WM_DISPLAYCHANGE = 0x007e;

    // Listen for operating system messages. 
    switch (m.Msg)
    {
        case WM_DISPLAYCHANGE:

            // The WParam value is the new bit depth
            uint width = (uint)(m.LParam & 0xffff);
            uint height = (uint)(m.LParam >> 16);
            break;                
    }
    base.WndProc(ref m);
}

关于c# - 检测何时连接新显示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11983111/

相关文章:

c# - 从 Parallel.ForEach 循环内部调用异步方法时出现无效操作异常

.net - 使用 .NET "WinForms"SplitContainer 控件,如何动态隐藏面板?

c# - 过滤 ListView 中的项目

.net - 为客户提供 .NET 的替代方案

c# - 检查剪贴板是否有数据,粘贴到文本框中

c# - 如何在格式字符串中居中对齐参数

c# - MultiTrigger:条件绑定(bind)到 DependencyProperty 不起作用

C# 使文本框中的一组字符表现得像一个字符

c# - ASP.NET MVC 4 RouteLink 不工作

c# - 表单应用程序中的错误范围