![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 12:53 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 批处理或者vbs如何获取当前分辨率【讨论】 |
| 可打印版本 2,769 / 21 |
| 第1楼 lwb1978 | 发表于 2007-07-08 16:38 |
| 初级用户 发帖 26 积分 72 | |
|
批处理或者vbs如何获取当前分辨率【讨论】 获取后并将结果写入txt文件。
谢谢 [ Last edited by lwb1978 on 2007-7-9 at 06:02 PM ] |
|
| 第2楼 ccwan | 发表于 2007-07-08 18:58 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
可以通过查询注册表来实现,找到的是16进制的,自己转换一下吧。
|
|
| 第3楼 zh159 | 发表于 2007-07-09 00:25 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
BAT的:
set /a str=%%i 将16进制数据转为10进制 reg HKCC\SYSTEM /s|findstr Resolution 出来的第一第二个数据才是当前分辨率 VBS的: [ Last edited by zh159 on 2007-7-9 at 04:07 PM ] |
|
| 第4楼 lwb1978 | 发表于 2007-07-09 01:13 |
| 初级用户 发帖 26 积分 72 | |
|
问题解决,谢谢所有楼上的朋友
[ Last edited by lwb1978 on 2007-7-9 at 01:26 AM ] |
|
| 第5楼 ccwan | 发表于 2007-07-09 07:52 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
re zh159
我每次更改分辨率后,使用代码测试,发现前4行都不是当前分辨率,所以才有2楼的代码。 |
|
| 第6楼 ccwan | 发表于 2007-07-09 08:10 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
楼主可以将分辨率改变,再用zh159的代码看一下,就知道我所说非虚了。
|
|
| 第7楼 everest79 | 发表于 2007-07-09 09:16 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
for /f %%i in ('"wmic desktopmonitor get screenwidth,screenheight /value"') do set %%i
echo %screenwidth% %screenheight% |
|
| 第8楼 slore | 发表于 2007-07-09 11:18 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
{D7F18ECC-5E3A-474C-9877-3BF7E5FE1A25}对不同的电脑可能不一样
|
|
| 第9楼 tyh | 发表于 2007-07-09 12:42 |
| 初级用户 发帖 43 积分 80 | |
|
偶只能加两分,不然再多加点。
|
|
| 第10楼 lwb1978 | 发表于 2007-07-09 18:00 |
| 初级用户 发帖 26 积分 72 | |
|
本人测试了7楼的代码,不知道为什么我的电脑无法用wmic desktopmonitor 获取到
screenwidth,screenheight ,screenwidth,screenheight 都是空的。 另外回ccwan大大,我现在采用的是注册表获取法,电脑在更改分辨率后,从注册表中获取到的当前分辨率的确只有最上面的两行才是当前的。所以我采用的办法是XResolution和YResolution分别获取,在for中用goto只循环一次,只读取第一条注册表: For /f "tokens=3" %%i in ('Reg query HKCC\SYSTEM\CurrentControlSet\Control\VIDEO /s ^|findstr "XResolution"') do ( Set "屏幕宽=%%i" Goto 获取屏幕宽完成 ) ) :获取屏幕宽完成 |
|
| 第11楼 zh159 | 发表于 2007-07-09 18:04 |
| 金牌会员 发帖 1,467 积分 3,687 | |
Originally posted by ccwan at 2007-7-9 07:52: 我试了四台机,其中一台是第一、二行,两台是后两行,一台是四行都一样(只有四行) Originally posted by slore at 2007-7-9 11:18: 确实如此,我有一台机有三个不同的项 看来还是wmic方便些,如果是HTA,用window.screen.width、window.screen.height获取 |
|
| 第12楼 lwb1978 | 发表于 2007-07-09 18:25 |
| 初级用户 发帖 26 积分 72 | |
|
找到为什么不用直接用7楼代码的原因了,我直接用wmic desktopmonitor get screenwidth,screenheight /value,是这样显示的:
ScreenHeight=768 ScreenWidth=1024 ScreenHeight= ScreenWidth= 估计是我的显示有电视输出的原因,会得出两个空值 |
|
| 第13楼 ccwan | 发表于 2007-07-09 18:42 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
7楼代码改成这样:
|
|
| 第14楼 lwb1978 | 发表于 2007-07-09 18:48 |
| 初级用户 发帖 26 积分 72 | |
|
re ccwan
因为我的电脑会取到两个分辨率的值,一个是实际的,下边一个是空的,所以在for过后,最终%screenwidth% %screenheight%得到的是空值,所以我测试了下,下面的代码可行: for /f "tokens=2 delims==" %%i in ('"wmic desktopmonitor get screenwidth /value"') do ( Set "屏幕宽=%%i" if not "%%i!"=="!" goto OK ) :Ok echo %屏幕宽% 也就是分别获取高和宽 |
|
| 第15楼 ccwan | 发表于 2007-07-09 18:59 |
| 金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊 | |
|
re lwb1978
关于不同系统有所差异的问题,我领教很多了,只能具体情况具体分析了。 |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |