6

ゲームのユーザーフレンドリーな設定をロードする際に問題が発生しました。

私がやろうとしていること:
すべてのモニターの名前を区別できる方法で読み込もうとしています。


私が試したこと:


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


GraphicsEnvironment (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台のモニターを持っています。これらの名前はそれぞれ、「画面の解像度」コントロール パネルから取得した名前です。


追加:
これで達成しようとしているもう1つのことは、画面の向きを伝えることができることです。私が見たところによると、横向き、縦向き、横向き (反転)、縦向き (反転) のいずれかです。次に、ゲームをランドスケープでのみ実行したいと思います-反転するかどうか。

2 つの主なタイプを区別できるようになることが、次のステップになるでしょう。

これをお読みいただきありがとうございます。事前にこの質問について不明確な点がある場合はお詫び申し上げます。

私はレジストリ アクセスと可能な dll 実装を使用する準備ができているので、その場合に備えてそれらにタグを付けることにしました。

4

3 に答える 3

3

成功への道

アクセスしたいモニター名情報は、Windows レジストリの場所に含まれています。

SYSTEM\CurrentControlSet\Enum\DISPLAY

Get PC's Monitor Information Using .NET/WMIという質問から受け入れられた回答には、 WMIMonitorを指すリンクがあります。

sourceforge プロジェクトとして、ソースが利用可能であることを確認して、このカスタム WMI イネーブラーの内部動作を確認できます。

したがって、この WMI 拡張機能が機能する場合は、Java からレジストリにアクセスするためのライブラリが必要であり、コードをここに書き直す必要があると思います。

レジストリへのアクセス: Java を使用した Windows レジストリへの読み取り/書き込み

失敗する

WMI へのさまざまな呼び出しを使用して、モニターの実際の名前が表示されませんでした。ただし、WMI ライブラリについて説明する情報があるため、非常に有益でした。

于 2013-06-26T16:12:44.650 に答える