我想知道是否可以了解显示器是打开还是关闭。
这是我尝试过的:
GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] devices = g.getScreenDevices();
int monitor_count = 0;
for(GraphicsDevice device : devices){
if(device.getType() == GraphicsDevice.TYPE_RASTER_SCREEN)
monitor_count++;
}
if(monitor_count==0){
System.out.println("Monitor is OFF");
}else{
System.out.println("Monitor is ON");
}
但即使我关闭显示器(或直接断开电源),它仍然会继续算作一台显示器。
我如何知道显示器是否关闭?
最佳答案
这在跨平台 Java 中当然是不可能的,而且说实话,即使我们求助于 native 代码,在可靠的意义上也确实不可能。
在 Windows 上本地执行此操作的(不可靠)方法是使用 GetDevicePowerState
- 在kernel32.dll
中找到它。然而,从我不久前使用此功能进行的实验来看,我可以说它绝对不适用于所有显示器,而且显然即使这是可靠的,它也将是一个仅限 Windows 的解决方案。
如果您确实想走这条路线,同时牢记上述限制,请使用 MonitorFromPoint
获取主监视器的句柄(传入 0,0 作为点并使用 MONITOR_DEFAULTTOPRIMARY
标志。)
关于java - 如何检查显示器是否打开或关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859759/