バッチ ファイルを使用して、ユーザーの解像度が「1280 x 1024」より高いか低いかを検出する方法を見つけようとしています。
解像度が「1280 x 1024」以上の場合は、A を実行します。それ以外の場合は、B を実行します。
これを行う方法を知っている人はいますか?
乾杯、
エリオット
バッチ ファイルを使用して、ユーザーの解像度が「1280 x 1024」より高いか低いかを検出する方法を見つけようとしています。
解像度が「1280 x 1024」以上の場合は、A を実行します。それ以外の場合は、B を実行します。
これを行う方法を知っている人はいますか?
乾杯、
エリオット
レジストリの代わりに、次の方法で解像度を確認することもできWmic
ます。 aspx
wmic desktopmonitor where availability=3 get screenHeight,screenWidth
複数のモニターが接続されている場合、複数の行が表示される可能性があることに注意してください。これらのケースは、スクリプトで処理する必要があります。
これはいくつかの理由で少しトリッキーです:
解決策はレジストリにあり、reg.exe
. ただし、実際に見つけるのは簡単ではありません。私にとっては下です
HKLM\SYSTEM\CurrentControlSet\Control\Video\{7FD4F64D-A7B2-41A9-AEEB-835BE4473FFA}\0000
とDefaultSettings.XResolution
でDefaultSettings.YResolution
。ただし、GUID は、使用しているビデオ カードとドライバーによって異なる可能性が高いため、すべての下で繰り返す必要がありますHKLM\SYSTEM\CurrentControlSet\Control\Video
。
より高い解像度とはどういう意味ですか? 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.
私の場合、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%