无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 29543|回复: 154
打印 上一主题 下一主题

[原创] 有了这款简易对话框组件,批处理不用再面向黑框了

  [复制链接]
1#
发表于 2020-11-17 21:52:53 | 显示全部楼层
回复

使用道具 举报

2#
发表于 2020-11-17 23:17:53 | 显示全部楼层
本帖最后由 双响炮 于 2020-11-17 23:50 编辑

持久对话框太符合我现在的需求了。但几个子命令不能同时使用吗?比如我想同时修改标题和内容。SetTitle起作用但SetContent不行
回复

使用道具 举报

3#
发表于 2020-11-18 00:03:50 | 显示全部楼层
本帖最后由 双响炮 于 2020-11-18 00:12 编辑
CodeHz 发表于 2020-11-17 23:22
你可以分开写的

这样写对吗?就是分两步修改标题和内容?
  1. @echo offre
  2. conapi title /value 设置标题
  3. conapi show /mode hide
  4. start /b condlg /title 友情提示! wintitle 一键恢复 /icon Information marquee /pipe snai9 /cascade 请不要关闭对话框 进度到100%%后会自动重启
  5. snapshot.exe
  6. condlg rpc /pipe snai9 set_title 恭喜!
  7. condlg rpc /pipe snai9 set_content 恢复成功,2秒后重启
  8. timeout 2
  9. condlg rpc /pipe snai9 close
复制代码



回复

使用道具 举报

4#
发表于 2020-11-18 01:01:07 | 显示全部楼层
CodeHz 发表于 2020-11-18 00:49
对是对,不过为啥不直接关闭然后开一个新的wait对话框呢。。 反正都是最后一步了

正自个儿闷着瞎琢磨要把rpc和wait放在一起用呢,就想最后2秒的进度条,怎么也不行,你这真是一语惊醒梦中人呀!
回复

使用道具 举报

5#
发表于 2020-11-18 01:15:35 | 显示全部楼层
这样写果然可以了,问题又来了,wait能不能不显示确定按钮?或者有没有取消按钮?万一不想重启还能返回。
  1. @echo offre
  2. conapi title /value 设置标题
  3. conapi show
  4. start /b condlg /title 友情提示! /wintitle 一键恢复 /icon Information marquee /pipe snai9 /cascade 请不要关闭对话框 进度到100%%后会自动重启
  5. snapshot.exe
  6. condlg rpc /pipe snai9 close
  7. condlg /title 恭喜 /wintitle 一键恢复 /icon Information wait /timeout 2000 "恢复成功" "2秒后重启 " "........"
复制代码
回复

使用道具 举报

6#
发表于 2020-11-18 08:51:39 | 显示全部楼层
CodeHz 发表于 2020-11-18 01:42
可以,和msgbox一样可以用/button指定按钮,然后用%errorlevel%判断,具体数值你可以先试验一下


不好意思,是我没有认真看说明,已弄成功!
回复

使用道具 举报

7#
发表于 2020-11-18 14:02:43 | 显示全部楼层
本帖最后由 双响炮 于 2020-11-18 22:10 编辑

最后是这样写的,勉强能够达到效果,还想请教一下有没有更好的写法
  1. @echo offre
  2. conapi title /value 一键恢复
  3. conapi show
  4. condlg /title 友情提示 /wintitle 一键恢复 /icon Information wait /button no /timeout 5000 "您确定现在马上恢复?" "如欲中止请按  【否】 "
  5. if "%errorlevel%" == "7" (exit) else (
  6. start /b condlg /title 友情提示! /wintitle 一键恢复 /icon Information marquee /pipe snai9 /cascade 请不要关闭对话框 进度到100%%后会自动重启
  7. for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\windows\explorer.exe set sd=%%b
  8. for %%a in (i h g f e d ) do (
  9.    for /f "delims=" %%i in ('dir /s/a/b/a-d "%%a:\snap\sn.sna" 2^>nul') do (
  10.        %%~dpi\snapshot.exe %%~dpi\sn.sna %sd%: -Gx
  11. )
  12. )
  13. condlg rpc /pipe snai9 close
  14. condlg /title 恭喜 /wintitle 一键恢复 /icon Information wait /timeout 1000 "恢复成功" "即将重启 "
  15. )
  16. exit
复制代码
回复

使用道具 举报

8#
发表于 2020-11-18 21:23:31 | 显示全部楼层
双响炮 发表于 2020-11-18 14:02
最后是这样写的,勉强能够达到效果,还想计教一下有没有更好的写法

奇怪呀,实际测试居然snapshot.exe的自动恢复界面出不来,把
  1. %%~dpi\snapshot.exe %%~dpi\sn.sna %sd%: -Gx
复制代码
修改成
  1. %%~dpi\snapshot.exe  -Gx
复制代码
仅仅打开snapshot.exe这个软件却又是可以的,到底是哪儿出问题啦?以前同样的批处理带黑框是可以的。
回复

使用道具 举报

9#
发表于 2020-11-18 23:42:36 | 显示全部楼层
CodeHz 发表于 2020-11-18 22:57
理论上不会影响的,我比较怀疑是哪里打错了(要不你把那个show的那一行用rem吃掉测试下报错信息

明天找电脑测试,自己电脑还不敢弄,资料太多,万一成功恢复了咋办刚才把snapshot的官网文档又看了一遍,希望找点什么出来
回复

使用道具 举报

10#
发表于 2020-11-19 20:23:50 | 显示全部楼层
CodeHz 发表于 2020-11-18 22:57
理论上不会影响的,我比较怀疑是哪里打错了(要不你把那个show的那一行用rem吃掉测试下报错信息
  1. for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:\windows\explorer.exe set sd=%%b
复制代码

估计这句有点问题,系统盘和PE启动后的X盘都有explorer.exe,变量%sd%的值先是C,后来又变成X了,我对批处理不精通,不晓得在找到首个explorer.exe后如何跳出循环,希望这篇帖子里有高手看到的话能够给予指点

点评

感谢slore提供思路,我努力试试,确实水平有限。其实本来最先是为隐藏黑框在您的帖子里请教过的,也得到了耐心的解答,但因为需要给些提示的问题开了一个帖,从而得到了CodeHz的帮助,然后转了一圈又在这里居然同时  详情 回复 发表于 2020-11-19 21:40
hmm,你可以在循环里去掉X盘的(PE是不是都用这个啊(  详情 回复 发表于 2020-11-19 20:43
x放到c前面,或者删除。要么set后直接goto 一个for外面的标签,出来。  发表于 2020-11-19 20:41
回复

使用道具 举报

11#
发表于 2020-11-19 21:01:48 | 显示全部楼层
CodeHz 发表于 2020-11-19 20:43
hmm,你可以在循环里去掉X盘的(PE是不是都用这个啊(

我也是这样想,如果实在搞不好就去掉X,但也有PE不是X的,或者把PE的explorer.exe删除,但别人的PE就不能用了,所以还是想多学点批处理的知识,应当能解决,只是在网上看了下问这个的不多
回复

使用道具 举报

12#
发表于 2020-11-19 21:40:03 | 显示全部楼层
双响炮 发表于 2020-11-19 20:23
估计这句有点问题,系统盘和PE启动后的X盘都有explorer.exe,变量%sd%的值先是C,后来又变成X了,我对批 ...

感谢slore提供思路,我努力试试,确实水平有限。其实本来最先是为隐藏黑框在您的帖子里请教过的,也得到了耐心的解答,但因为需要给些提示的问题开了一个帖,从而得到了CodeHz的帮助,然后转了一圈又在这里居然同时受到两位大神的指点,真是幸运!

点评

如果只是要去掉启动PE所在盘,直接获取环境变量中%SystemDrive%或者%windir%,然后从你的C到Z列表替换掉。  详情 回复 发表于 2020-11-21 14:06
回复

使用道具 举报

13#
发表于 2020-11-21 13:55:54 | 显示全部楼层
  1. show [/mode Hide|ShowNormal|ShowMinimized|ShowMaximized|ShowNoActivate|Show|Minimize|ShowMinimizedNoActivate|ShowNa|Restore|ShowDefault]
复制代码

这些个参数只有几个会用,其它几个能说说怎么用吗?特别是shownoactivate和showna的区别,再就是showminimied和miniize的区别,还有show和restore的区别。
另外就是想问,conapi.exe有UAC提权吗?

点评

(具体来说就是微软提供了这些选项我就全列出来了。。。它自己的文档就没说清楚,选项之间也没有正交性... 但是大概 ShowNoActivate相比ShowNa是最小化,Na则是只显示不激活,原来最小化还是最小化 restore对应的  详情 回复 发表于 2020-11-21 14:12
https://baike.baidu.com/item/ShowWindow/5279029  详情 回复 发表于 2020-11-21 14:06
回复

使用道具 举报

14#
发表于 2020-11-21 15:00:23 | 显示全部楼层
plusv 发表于 2020-11-21 14:06
https://baike.baidu.com/item/ShowWindow/5279029

谢谢,提供的网址已收藏
回复

使用道具 举报

15#
发表于 2020-11-21 15:13:18 | 显示全部楼层
slore 发表于 2020-11-21 14:06
如果只是要去掉启动PE所在盘,直接获取环境变量中%SystemDrive%或者%windir%,然后从你的C到Z列表替换掉 ...

没有去年PE所在的盘,按您的思路用goto成功跳出来了,只要C盘有explorer.exe,就确定需要恢复的系统盘是C,再不会往后查找了。现在已测试成功,效果还行。WimBuilder2更新啦?我赶紧过去啦
回复

使用道具 举报

16#
发表于 2020-11-21 15:19:01 | 显示全部楼层
CodeHz 发表于 2020-11-21 14:12
(具体来说就是微软提供了这些选项我就全列出来了。。。它自己的文档就没说清楚,选项之间也没有正交性.. ...

似乎有点明白了。PE那个已成功了,这里表示感谢。因为我还有个安装PE的批处理,在WIN7里蛮好,但在WIN10里提权还要重启才能行,故而有此一问,不过ShellExecuteEx应该可以吧?
回复

使用道具 举报

17#
发表于 2020-12-4 12:52:30 | 显示全部楼层
Q3an 发表于 2020-12-2 10:42
这个看起来非常方便,但我不是很清楚,这个可以在*.bat里直接使用么?我在命令行里输入 "condlg /wintitle  ...

你写个批处理出来,然后同目录下要有condlg文件
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-10 14:47

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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