无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1301|回复: 17
打印 上一主题 下一主题

[已解决] 用bat获取所有扩展屏幕的像素分辨率

  [复制链接]
跳转到指定楼层
1#
发表于 2024-12-22 19:51:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Myptour 于 2024-12-27 21:57 编辑

度娘了一段,用dxdiag的方法,如下,还有更快速的方法吗?
  1. [url=home.php?mod=space&uid=336905]@echo[/url] off
  2. echo 正在获取所有显示器分辨率信息...

  3. REM 创建一个临时文件来存储dxdiag的输出
  4. setlocal enabledelayedexpansion
  5. set "tempFile=dxdiag_output.txt"

  6. REM 使用dxdiag命令生成诊断信息文本文件
  7. dxdiag /t %tempFile%

  8. REM 初始化变量

  9. REM 读取生成的文本文件并提取显示器分辨率信息
  10. for /f "tokens=2 delims=:" %%a in ('findstr /i /C:"Current Mode:" dxdiag_output.txt') do (
  11.         echo 显示器分辨率: !resolution! x %%a

  12.     )

  13. echo 完成!
  14. pause
复制代码
  1. 解决方法如下:
  2. ::扩展显示器
  3. DisplaySwitch.exe /extend
  4. timeout 2

  5. ::导出显示配置
  6. MultiMonitorTool.exe /SaveConfig ".\config.cfg"

  7. ::从config.cfg中提取"Width=" "Height="两个值即可
复制代码


2#
发表于 2024-12-22 20:28:22 | 只看该作者
批处理可以直接调用 WMIC,如果用批处理调用 VBS的话,刚好以前写过宽度这一段:
  1. Function GetScreenTureWidth() '取屏幕最高分辨率宽度
  2.         Set colItems = GetObject("winmgmts:\\.\root\cimv2").ExecQuery("SELECT * FROM Win32_VideoController", "WQL",wbemFlagReturnImmediately + wbemFlagForwardOnly)
  3.         For Each objItem In colItems:GetScreenTureWidth=objItem.CurrentHorizontalResolution:Next
  4. End Function
复制代码

批处理貌似更简单,不知道你想用分辨率来做什么,但需要注意一下的是,即使有了分辨率,还要重视缩放比例。




点评

有多个显示器,想获取"扩展屏幕"的分辨率,不是主显的分辨率,找不到更好的办法,似乎都有一定延迟  详情 回复 发表于 2024-12-22 20:42
回复

使用道具 举报

3#
发表于 2024-12-22 20:31:47 | 只看该作者
刚试了用文心一言直接写了个,试了下可以用:
wmic path Win32_VideoController get VideoModeDescription /value
回复

使用道具 举报

4#
 楼主| 发表于 2024-12-22 20:42:58 | 只看该作者
9zhmke 发表于 2024-12-22 20:28
批处理可以直接调用 WMIC,如果用批处理调用 VBS的话,刚好以前写过宽度这一段:
批处理貌似更简单,不知 ...

有多个显示器,想获取"扩展屏幕"的分辨率,不是主显的分辨率,找不到更好的办法,似乎都有一定延迟
回复

使用道具 举报

5#
发表于 2024-12-22 20:48:17 | 只看该作者
没有其它显示器,没有测试出dxdiag有任何延迟。
回复

使用道具 举报

6#
发表于 2024-12-23 09:49:42 | 只看该作者
谢谢分享
回复

使用道具 举报

7#
发表于 2024-12-23 13:12:12 | 只看该作者
来了解下
回复

使用道具 举报

8#
发表于 2024-12-23 20:27:15 | 只看该作者
刚才用文心一言写了一段,在我的电脑上可以取到分辨率:
  1. # 确保加载了 System.Windows.Forms 程序集
  2. Add-Type -AssemblyName System.Windows.Forms

  3. # 初始化一个计数器来跟踪显示器
  4. $monitorIndex = 1

  5. # 遍历所有屏幕并输出它们的分辨率
  6. foreach ($screen in [System.Windows.Forms.Screen]::AllScreens) {
  7.     $resolution = "$($screen.Bounds.Width)x$($screen.Bounds.Height)"
  8.     Write-Output "Display ${monitorIndex}: ${resolution}"
  9.     $monitorIndex++
  10. }
复制代码

我保存成了c:\aaa.ps1
C:\>powershell c:\aaa.ps1
Display 1: 1707x960
Display 2: 1920x1080

点评

受DPI影响,分辨率可能不准确 找到了第三方小程序,可以秒速获取真实值  详情 回复 发表于 2024-12-27 21:59
回复

使用道具 举报

9#
发表于 2024-12-25 14:15:19 | 只看该作者
1
回复

使用道具 举报

10#
发表于 2024-12-25 14:19:03 | 只看该作者
谢谢分享
回复

使用道具 举报

11#
发表于 2024-12-25 14:19:16 | 只看该作者
下载试试
回复

使用道具 举报

12#
 楼主| 发表于 2024-12-27 21:59:31 | 只看该作者
9zhmke 发表于 2024-12-23 20:27
刚才用文心一言写了一段,在我的电脑上可以取到分辨率:

我保存成了c:\aaa.ps1

受DPI影响,分辨率可能不准确

找到了第三方小程序,可以秒速获取真实值
回复

使用道具 举报

13#
发表于 2024-12-28 08:57:51 | 只看该作者

感谢分享
回复

使用道具 举报

14#
发表于 2025-1-14 18:34:04 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

15#
发表于 2025-1-14 18:48:25 | 只看该作者
感谢分享
回复

使用道具 举报

16#
发表于 2025-1-14 19:16:00 来自手机 | 只看该作者
强大的bat
回复

使用道具 举报

17#
发表于 2025-1-17 13:26:38 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

18#
发表于 2025-1-24 09:40:36 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-8 05:39

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表