11

[画面の解像度] ダイアログで [識別] ボタンを押すと、Windows は各モニターに大きな白いモニター番号を表示します。Windows XP では (EnumDisplayDevices を使用して) モニター座標と共にプログラムでそれらを見つけるのは簡単でしたが、Windows 7 では壊れています。どうやってやるの?

  1. EnumDisplayDevices と GetMonitorInfo は、Windows 7 でその目的のために信頼できなくなりました。
  2. GetMonitorInfo を試してから、MONITORINFOEX.szDevice (IE \.\Display2) からモニター番号を抽出しても成功しませんでした。もう 1 人2 年前にもそれを行い、getMonitorInfo にバグがあると主張しました。このバグは、Microsoft によってコメントなしで修正済みとしてマークされましたが、最新の更新プログラムを適用した win7 マシンで再現できます。(ところで、誰か教えてくれませんか - おそらくこのバグは win8 には存在しませんか?)
  3. 新しい CCD API からQueryDisplayConfigを試しましたが、必要な情報が見つかりませんでした。

誰か道を知っていますか?

4

3 に答える 3

1

Windows アプリケーションでモニターの数を知りたいと思ったことは一度もありませんが、パラメーター値を指定してGetSystemMetrics 関数SM_CMONITORSを呼び出して、デスクトップ上のディスプレイ モニターの数を取得できます。

GetSystemMetricsWindows アプリケーション関数で、主にパラメータ値SM_CXVIRTUALSCREENSM_CYVIRTUALSCREENSM_XVIRTUALSCREENおよびを呼び出してSM_YVIRTUALSCREEN、表示領域の外でアプリケーション ウィンドウを完全にまたは部分的に開かないようにしています。ユーザーが複数のモニターに表示領域を拡張しているが、すべてのモニターがオンになっているわけではない場合、アプリケーション ウィンドウが表示されないことがあります。

パラメーターの値を指定したSystemParametersInfo 関数は、常に上部にある他のウィンドウ (バー) によって部分的に隠れることなく、アプリケーション ウィンドウをどこに配置できるか、およびプライマリ画面で幅と高さをどれだけ大きくできるかを知るのにも非常に役立ちます。SPI_GETWORKAREAuiAction

Windows アプリケーションでモニターからの詳細情報が必要な場合は、GetMonitorInfo 関数も参照してください。

于 2014-01-25T20:07:18.197 に答える