中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-15 13:29
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,268 会员排行
DOS批处理 & 脚本技术(批处理室) » 关于实现P全屏幕的多种方法筛选[slore来解决联网问题]
可打印版本  3,076 / 15
第1楼 dosmania 发表于 2007-09-22 04:30
初级用户 发帖 54 积分 172
关于实现P全屏幕的多种方法筛选[slore来解决联网问题]


这是大家知道的实现全屏幕的代码,用了一下,发现以下问题:
1. 实现全屏幕后字体外观很差,有种被压扁的感觉
2. 光标的移动会被完全显示出来,输出空格的时候光标显示出来了不好看
3. 最严重的一个问题,ping 是能ping到外网,无法使用VBS联网。
比如在CMD下载网页源代码的VBS在这个全屏幕模式下用不了,我已测试过。
4. 好象被卡巴报出”改变输入输出方向。。。“

第二种实现全屏幕的方法:
按ALT+ENTER ,这个也是大家知道的,用这种方法完全没有以上提到的四个问题。不过,大家不知道有没有办法使用用ALT+ENTER全屏幕,要自动的,不要人为去按的。

第三种实现全屏幕的方法:
这种是永久全屏幕的,改注册表以下键值:

HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe
"FullScreen"=dword:00000001

若没有%SystemRoot%_system32_cmd.exe 这个子项则新建一个。
通过这种方法实现的全屏幕模式和第二种有完全一样的效果,只是全屏幕是永久的,除非你改回FullScreen 的值为 0

那么能否让批处理文件一开始运行就改了注册表 FullScreen的值呢?
答案是肯定的,但是一开始打开的批处理程序内存不会刷新
也就是说,一开始打开就算你改了注册表也是实现不了全屏幕的,下次启动批处理才会实现全屏幕```所以,希望有达人能解决这个问题
我想要的是不需要第二次运行就能实现全屏幕,或者有人告诉我这是永远无法实现的,好让我死了这个心也行,不过要有根据。

---------------------------------------------------------------
初步解决办法见13楼
缺陷: 我发现修改注册表那种方法联网出现了点问题,具体见下面贴子:
http://www.cn-dos.net/forum/viewthread.php?tid=33750&fpage=1

[ Last edited by dosmania on 2007-9-23 at 08:07 PM ]
第2楼 slore 发表于 2007-09-22 13:06
铂金会员 发帖 2,478 积分 5,212
都需要2次运行……你发的那个debug你没有看到exit?和%ComSpec%么?
第3楼 dosmania 发表于 2007-09-22 18:37
初级用户 发帖 54 积分 172
我知道是需要两次运行。
用start 新开窗口运行批处理本身的话是会重新读取注册表相关设置的,
所以start 出来的窗口会是全屏幕的
问题是,如何在用start 新开一个窗口之后,也同时关掉原来那个窗口啊
这是以假乱真的做法啊,主要是不想关掉再去打开一次才能实现全屏幕啊``
第4楼 slore 发表于 2007-09-22 19:06
铂金会员 发帖 2,478 积分 5,212
给BAT一个参数……

通过参数判断是第一次还是第2次……

没有参数的时候修改注册表……然后exit调用自己+参数
第5楼 zh159 发表于 2007-09-22 20:53
金牌会员 发帖 1,467 积分 3,687
Originally posted by slore at 2007-9-22 19:06:
给BAT一个参数……

通过参数判断是第一次还是第2次……

没有参数的时候修改注册表……然后exit调用自己+参数

不用判断第一次还是第2次,只要用REG QUER判断是否有该键值来处理


第6楼 yoyodos 发表于 2007-09-22 23:15
初级用户 发帖 59 积分 128
楼主也是个爱较真的人,哈哈 ,学习一下
第7楼 dosmania 发表于 2007-09-23 00:24
初级用户 发帖 54 积分 172
TO all above:


这样的代码我还不会判断么```其实你这里写错了

这样才对!

各位不要光一堆理论,要实际测试一下就知道你们的理论行不行得通了
判断FullScreen,然后有就不用改,没有就改,一般情况下是没有全屏幕的,
那我们不管他本来有没有,直接改FullScreen为1就可以了
只是你是运行了 批处理之后才改到注册表的,那你运行批处理之前要先读注册表的Fullscreen的嘛,若本来是0的话,你的批处理就会是默认窗口运行的,后面你怎么改注册表都只会在下次运行批处理才生效或者start出一个批处理,这时就能实现全屏幕了,只是原来那个批处理要怎么关掉!

[ Last edited by dosmania on 2007-9-23 at 01:16 AM ]
第8楼 zh159 发表于 2007-09-23 03:21
金牌会员 发帖 1,467 积分 3,687
Originally posted by dosmania at 2007-9-23 00:24:
TO all above:


这样的代码我还不会判断么```其实你这里写错了
...

我已经注明了“”,所以仅供参考

正如 slore 的执行命令,判断“FullScreen”数值,如果不为“1”,改为“1”,并start "" "%~nx0"&&exit(退出后自动第二次启动)
如果“FullScreen”数值为“1”,不执行修改命令及start "" "%~nx0"&&exit

[ Last edited by zh159 on 2007-9-23 at 03:22 AM ]
第9楼 slore 发表于 2007-09-23 09:04
铂金会员 发帖 2,478 积分 5,212
dosmania:
不要较真了……

你才是“错”的……
可能运行环境不同,xp系统直接在console下……

不过要说的一点我的意思不是判断注册表……

if "%1"=="" goto FullScreen:
全屏模式下的代码……

Goto EOF
:FullScreen
这里改注册表FS为1然后exit然后随便调用自己给个参数……


要做的好的话,就把读取的注册表值传给你的P,在P最后还原成默认值


(如果方便的话,直接打包一个快捷方式……快捷方式上CMD的启动设置为全屏)
第10楼 HAT 发表于 2007-09-23 12:34
版主 发帖 5,017 积分 9,023
slore兄的思路果然高明
第11楼 slore 发表于 2007-09-23 13:40
铂金会员 发帖 2,478 积分 5,212
HAT看懂我的意思了……

恩,写个完整的吧~
第12楼 lxmxn 发表于 2007-09-23 13:51
版主 发帖 4,938 积分 11,386
不错,不过倒数第二条语句的%0不需要双引号,如果%0含有空格,cmd会自动预处理为加了双引号的路径,加了双引号反而容易出错。
第13楼 slore 发表于 2007-09-23 14:11
铂金会员 发帖 2,478 积分 5,212
呵呵,那个是直接复制的……
恩,发现EOF在全屏不退出……改了下……



  1. @echo off
  2. if "%1"=="" goto :FullScreen
  3. ::还原显示模式
  4. REG Add HKEY_CURRENT_USER\Console /v FullScreen /t REG_DWORD /d %1 /f>nul

  5. ::全屏状态下代码段
  6. echo Welcome to Full Screen
  7. echo 按任意键退出. . .
  8. pause>nul
  9. Goto :End

  10. :FullScreen
  11. ::查询显示模式
  12. Set ShowMode=0
  13. for /f "delims=" %%i in ('REG QUERY HKEY_CURRENT_USER\Console /v "FullScreen"') do (
  14. Set ShowMode=%%i
  15. )
  16. Set ShowMode=%ShowMode:~-1%
  17. ::设置显示模式为全屏
  18. REG Add HKEY_CURRENT_USER\Console /v FullScreen /t REG_DWORD /d 1 /f>nul
  19. ::全屏启动当前Bat脚本
  20. start "" %0 %ShowMode%
  21. :End
  22. exit
Slore发表于: 2007-09-23 13:59
第14楼 dosmania 发表于 2007-09-23 17:27
初级用户 发帖 54 积分 172
slore 的方法妙啊~~~
我一直都以为start 新窗口后会等新窗口代码执行完后才执行 exit,晕``
原来可以同步执行,因为是在不同的内存空间里运行的对吧``
还原模式的设计也精彩啊``哈哈
%SystemRoot%_system32_cmd.exe
这个项是我在CMD窗口修改全屏属性后注册表里自动建的吖,原来console里的fullscreen也行,神奇收下了,多谢各位关注。。

另外,%SystemRoot%_system32_cmd.exe 是修改CMD.exe
直接修改console是修改那个命令提示符的

[ Last edited by dosmania on 2007-9-23 at 08:42 PM ]
第15楼 HAT 发表于 2007-09-23 21:38
版主 发帖 5,017 积分 9,023
//不过倒数第二条语句的%0不需要双引号,如果%0含有空格,cmd会自动预处理为加了双引号的路径,加了双引号反而容易出错。

好好学习 天天向上
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023