标签: monitors

如何检索监视器信息?

我正在尝试检索监视器ID,如Windows显示属性(#1,2等等)中所示,但我似乎无法找到方法.我尝试过使用EnumDisplayMonitorsEnumDisplayDevices.它们都返回类似"\.\ DISPLAY1"的内容.但是,此数字并不总是与Windows显示的数字相匹配,尤其是当使用2个视频卡驱动3个或更多显示器时.我是否缺少检索此信息的API调用,或者有没有办法从注册表或其他地方获取它?谢谢!

我尝试过这些方法:
Win32: EnumDisplayMonitors,EnumDisplayDevices:这些都没有返回活动的监视器,也没有一个返回正确的ID.
WMI: "select*from Win32_DesktopMonitor"不会返回所有监视器,也没有ID.
注册表:我在不同地点找到了显示器,我找到的地方都没有我想要的信息.

任何帮助深表感谢.:)

更新:这些是我要查找的监视器编号: 替代文字

.net c++ windows winapi monitors

13
推荐指数
1
解决办法
1350
查看次数

使用多个显示器运行VNC全屏

我正在使用VNC(客户端上的tigervnc-1.1.0,服务器上的RealVNC-4.1.2)连接到远程系统.客户端系统有两个使用Nvidia twinview的显示器,有效分辨率为3200x1200.

当我告诉vncviewer使用全屏时,远程系统窗口(1600x1200)在两个监视器中居中,两侧都有大的黑色空间.我也尝试在客户端系统上运行Xinerama而不是twinview,但这没有任何区别.

有没有办法在没有VNC帧的情况下以全屏模式运行vncviewer,但是将它限制为单个监视器?

vnc monitors

8
推荐指数
4
解决办法
2万
查看次数

如何更改监视器设置以通过脚本复制和扩展

由于我使用一台带有电视作为第二个显示器的笔记本电脑,我想制作一个小脚本,它将触发屏幕设置从扩展到克隆,当它设置为克隆时,它应该将屏幕设置设置为扩展。我想用 C# 制作它,因为它是我的主要语言,我认为它可以解决我的问题。

所以我现在制作了一个像这样的控制台应用程序:

class Program
{
    static void Main(string[] args)
    {
        DisplayChanger.Start();
    }

    private static Process DisplayChanger = new Process
    {
        StartInfo =
        {
            CreateNoWindow = true,
            WindowStyle = ProcessWindowStyle.Hidden,
            FileName = "DisplaySwitch.exe",
            Arguments = "/extend"
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

创建新流程效果很好。但我的问题是,如何检查“显示”的状态?我需要它,以便我可以运行测试以查看要启动的进程。

感谢您的帮助 :)

c# settings multiple-monitors screens monitors

5
推荐指数
1
解决办法
3995
查看次数

适用于多个屏幕的Java GUI全屏

我希望我不会发一个重复的问题,但我无法找到这样的问题,所以也许我很安全?无论如何...

对于我正在制作的应用程序,我将同时打开两个应用程序(两个独立的进程和窗口).运行这些应用程序的计算机将具有多个监视器.我希望第一个应用程序/窗口全屏显示并占用我的一个显示器(简单部分),另一个应用程序/全屏显示在第二个显示器上.如果可能的话,我希望他们以这种方式初始化.

目前,我使用此代码使我的窗口全屏:

this.setVisible(false);
this.setUndecorated(true);
this.setResizable(false);
myDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
myDevice.setFullScreenWindow(this);
Run Code Online (Sandbox Code Playgroud)

它所在的类是JFrame类的扩展,myDevice的类型为"GraphicsDevice".当然有可能有一个更好的方法来使我的窗口全屏,以便我可以在两个不同的显示器上全屏显示两个不同的应用程序.

如果我不清楚,请说明,我会尝试编辑澄清!

java user-interface awt fullscreen monitors

5
推荐指数
1
解决办法
2376
查看次数

如何让CreateWindowEx()在特定的监视器上创建窗口?

我已经确定我可以使用GetSystemMetrics(SM_CMONITORS)来查询连接的监视器的数量,但是他们可以通过什么方式来控制CreateWindowEx()用于窗口的监视器?

winapi createwindowex monitors

4
推荐指数
2
解决办法
3384
查看次数

使用win32/C++检索多个显示信息

有没有办法检索除主要显示器之外还有多少额外显示器的信息,它们的编号方式,尺寸是什么等等?我知道在.net土地上这很容易.

c++ winapi multiple-monitors monitors

4
推荐指数
2
解决办法
5353
查看次数

互斥体与监视器 - 比较

根据我对互斥锁的了解 - 它们通常在共享资源上提供锁定功能.因此,如果一个新线程想要访问这个锁定的共享资源 - 它要么退出要么必须不断轮询锁定(并且等待锁定会浪费处理器周期).

但是,监视器具有条件变量,这些条件变量为等待线程提供了更加异步的方式 - 将它们置于等待队列中,从而不会使它们占用处理器周期.

这是监视器相对于互斥锁(或没有条件变量的任何通用锁定机制)的唯一优势吗?

multithreading mutex monitors

2
推荐指数
1
解决办法
3363
查看次数

Java Thread notify()与notifyAll()

我对Java有点困惑notify().以下示例来自教科书.

public synchronized consume() {
    while(queue.isEmpty()) {
        try{ wait(); } catch (InterruptedException e) {}
    }
    // Assume that getElement() notifies to producers.
    element = queue.getElement();
    ...
}

public synchronized produce() {
    while(queue.isFull()) {
        try{ wait(); } catch (InterruptedException e) {}
    }
    element = new Element();
    ...
    queue.addElement(element);
    notifyAll();
}
Run Code Online (Sandbox Code Playgroud)

我完全理解produce()上面例子中的方法.但是,任何人都可以告诉我为什么我们不在notifyAll()第一个方法(consume())结束时使用?简而言之,为什么不喜欢这样:

public synchronized consume() {
    while(queue.isEmpty()) {
        try{ wait(); } catch (InterruptedException e) {}
    }
    // Assume that getElement() notifies to producers.
    element …
Run Code Online (Sandbox Code Playgroud)

java multithreading asynchronous synchronized monitors

2
推荐指数
1
解决办法
1619
查看次数