4

バッチ ファイルを使用して、ユーザーの解像度が「1280 x 1024」より高いか低いかを検出する方法を見つけようとしています。

解像度が「1280 x 1024」以上の場合は、A を実行します。それ以外の場合は、B を実行します。

これを行う方法を知っている人はいますか?

乾杯、

エリオット

4

3 に答える 3

3

レジストリの代わりに、次の方法で解像度を確認することもできWmicます。 aspx
wmic desktopmonitor where availability=3 get screenHeight,screenWidth

複数のモニターが接続されている場合、複数の行が表示される可能性があることに注意してください。これらのケースは、スクリプトで処理する必要があります。

于 2012-10-03T14:38:51.363 に答える
1

これはいくつかの理由で少しトリッキーです:

  1. 解決策はレジストリにあり、reg.exe. ただし、実際に見つけるのは簡単ではありません。私にとっては下です

    HKLM\SYSTEM\CurrentControlSet\Control\Video\{7FD4F64D-A7B2-41A9-AEEB-835BE4473FFA}\0000
    

    DefaultSettings.XResolutionDefaultSettings.YResolution。ただし、GUID は、使用しているビデオ カードとドライバーによって異なる可能性が高いため、すべての下で繰り返す必要がありますHKLM\SYSTEM\CurrentControlSet\Control\Video

  2. より高い解像度とはどういう意味ですか? 1366 × 768 は 1280 × 1024 より高くなるでしょうか? 総ピクセル数を数えますか?一次元高い?両者に?

いずれにせよ、私は次のバッチをまとめました。必要に応じて適応します。私のマシンでは正しい結果が得られますが、テストするものがそれほど多くありません。

@echo off
setlocal enabledelayedexpansion
for /f "delims=" %%l in ('reg query HKLM\SYSTEM\CurrentControlSet\Control\Video') do (
    reg query %%l\0000 /v DefaultSettings.XResolution >nul 2>&1
    if not errorlevel 1 (
        for /f "skip=1 tokens=3 delims= " %%x in ('reg query %%l\0000 /v DefaultSettings.XResolution') do (
            set /a X=%%x
        )
        for /f "skip=1 tokens=3 delims= " %%x in ('reg query %%l\0000 /v DefaultSettings.YResolution') do (
            set /a Y=%%x
        )
    )
)
echo Resolution: %X% × %Y%

if %X% GTR 1280 if %Y% GTR 1024 echo Greater than 1280 × 1024.
于 2012-10-03T12:24:21.403 に答える
0

私の場合、wmic desktopmonitor何も返されません。

これはWin 8.1で動作します

@ECHO OFF

for /f "delims=" %%# in  ('"wmic path Win32_VideoController  get CurrentHorizontalResolution,CurrentVerticalResolution /format:value"') do (
  set "%%#">nul
)

echo %CurrentHorizontalResolution%
echo %CurrentVerticalResolution%
于 2015-04-01T07:15:52.123 に答える