![]() |
中国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: 不用判断第一次还是第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: 我已经注明了“例”,所以仅供参考 正如 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在全屏不退出……改了下……
|
|
| 第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 |