我在加载游戏的用户友好设置时遇到了一个问题。
我正在尝试做的事情:
我正在尝试以可区分的方式加载所有监视器的名称。
我尝试过的:
wmic:
C:\Users\Matt>wmic
wmic:root\cli>DESKTOPMONITOR
Availability Bandwidth Caption ConfigManagerErrorCode ConfigManagerUserConfig CreationClassName Description DeviceID DisplayType ErrorCleared ErrorDescription InstallDate IsLocked LastErrorCode MonitorManufacturer MonitorType Name PixelsPerXLogicalInch PixelsPerYLogicalInch PNPDeviceID PowerManagementCapabilities PowerManagementSupported ScreenHeight ScreenWidth Status StatusInfo SystemCreationClassName SystemName
8 Generic PnP Monitor 0 FALSE Win32_DesktopMonitor Generic PnP Monitor DesktopMonitor1 (Standard monitor types) Generic PnP Monitor Generic PnP Monitor 96 96 DISPLAY\LGD02DA\4&265EFD6&0&UID67568640 OK Win32_ComputerSystem ALIENWARE
3 Generic PnP Monitor 0 FALSE Win32_DesktopMonitor Generic PnP Monitor DesktopMonitor2 (Standard monitor types) Generic PnP Monitor Generic PnP Monitor 96 96 DISPLAY\SAM08D6\5&14F3DA9&0&UID1078064 1080 1920 OK Win32_ComputerSystem ALIENWARE
wmic:root\cli>DESKTOP
BorderWidth Caption CoolSwitch CursorBlinkRate Description DragFullWindows GridGranularity IconSpacing IconTitleFaceName IconTitleSize IconTitleWrap Name Pattern ScreenSaverActive ScreenSaverExecutable ScreenSaverSecure ScreenSaverTimeout SettingID Wallpaper WallpaperStretched WallpaperTiled
1 500 TRUE Segoe UI 9 TRUE NT AUTHORITY\SYSTEM (None) FALSE FALSE
1 530 TRUE 43 Segoe UI 9 TRUE Alienware\Matt 0 FALSE 0 C:\Users\Matt\Pictures\Wall Papers\daftpunk3.png TRUE FALSE
1 500 TRUE Segoe UI 9 TRUE .DEFAULT (None) FALSE FALSE
图形环境(Java代码):
final GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
for (GraphicsDevice device : environment.getScreenDevices()) {
System.out.println(device);
System.out.println("\t" + device.getIDstring());
System.out.println("\t" + device.getType());
}
输出:
D3DGraphicsDevice[screen=0]
\Display0
0
null
D3DGraphicsDevice[screen=1]
\Display1
0
null
D3DGraphicsDevice[screen=2]
\Display2
0
null
我的期望:
Screen[0]: S23C350
Screen[1]: Mobile PC Display
Screen[2]: S23B350
我有 3 个显示器。这些名称中的每一个都是从“屏幕分辨率”控制面板中获取的名称。
附加:
我试图通过此实现的另一件事是能够分辨屏幕的方向。据我所见:它可以是风景、肖像、风景(翻转)或肖像(翻转)。然后我只想在横向上运行游戏 - 是否翻转。
能够区分这两种主要类型将是我的下一步。
感谢您抽出宝贵时间阅读本文,如果您对此问题有任何不清楚的地方,我深表歉意。
我准备使用注册表访问和可能的 dll 实现,所以我决定标记它们以防万一。
最佳答案
成功之路
您希望访问的显示器名称信息包含在 Windows 注册表位置中:
SYSTEM\CurrentControlSet\Enum\DISPLAY
关于问题 Get PC's Monitor Information Using .NET / WMI 的已接受答案 ,有一个链接指向 WMIMonitor .
作为一个 sourceforge 项目,可以检查源是否可用以查看此自定义 WMI 启用程序的内部工作:
因此,如果此 WMI 扩展适用于您,我认为需要一个从 java 访问注册表的库,并且您需要重新编写代码 here .
访问注册表:read/write to Windows Registry using Java
失败
使用对 WMI 的各种调用,未显示监视器的实际名称。 然而,它提供了很多信息,因为有描述 WMI 库的信息,例如:
关于java - 获取屏幕名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268869/