无忧启动论坛

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

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

  [复制链接]
跳转到指定楼层
1#
发表于 2020-11-17 20:47:23 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 CodeHz 于 2020-11-18 22:40 编辑

基本上就是用了 TaskDialog 这个 API,用的是win7以上都有的 comctl32 库(大概pe不会精简这个吧)
使用场景:
制作PE的时候运行一些脚本,其中包含一些交互选项,但是不想运行一个复杂的vbs或者开发新的界面,这个东西就可以配上用场了
先上截图
标准信息框
condlg /wintitle 测试 /title 这是消息框 /icon Shield msgbox 这是内容



自定义选项的信息框
可以从 %errorlevel% 中获得被选择的选项(数字可以看 https://docs.microsoft.com/en-us ... commctrl-taskdialog
condlg /wintitle 测试 /title 这是消息框 /icon Shield msgbox /button retry /button cancel 这是内容



选择框
可以从 %errorlevel% 中获得被选择的选项(0 - 关闭, 1,2,3...就是具体的选项)
condlg /title 选择器 /wintitle 演示 /icon Information select /option "选项 A" /option "选项 B" 这是说明



等待进度条
(同样可以指定显示的按钮,这里就不演示了)
condlg /wintitle 测试 /title 这是进度框 /icon Shield wait /timeout 5000 5秒后继续



可以跨进程控制的进度指示框
这个就比较复杂了,看图吧
其中 pipe 必须为 windows nt 的路径格式,也就是 \\.\Pipe\xxxx (理论上可以跨机,但是我没测试,格式是 \\<ip or hostname>\Pipe\xxxx )



具体参数解释
有如下通用参数 (子命令为rpc时无效)
  • /wintitle 设置窗口标题
  • /title 设置内容标题
  • /content 设置内容读取的文件,不指定就会使用末尾的参数
    (用于内容特别长的情况,通常都用最末尾的参数就够了)
  • /icon 设置图标,可选值 Warning|Error|Information|Shield

参数格式是
condlg <通用参数> <子命令> <子命令参数> <可选的的内容以参数形式提供,不可以/开头>
然后子命令上面大概都介绍过了,这里重点说说没介绍的marquee 和 rpc命令
marquee子命令
  • 必选参数 /pipe <命名管道路径> 用这个来控制对话框
  • 可选参数 /fps <数字> 刷新率,用于控制进度条滚动的速度
  • /cascade 在父进程退出后允许点击按钮以关闭对话框
  • /onexit <程序路径> (必须配合 cascade 使用)在父进程退出后调用指定程序,此时会禁用 cascade 允许的按钮(也就是又不能点击了)

rpc命令形式
condlg rpc <rpc参数> <rpc子命令> <rpc子命令参数>
rpc参数就是
  • /pipe - 用于指定连接的管道名字
  • /timeout - 用于指定连接的超时(不包括命令执行的超时。。)
  • /content - 用于指定文本参数,主要供 SetText 系列子命令使用

它也有几个子命令,分别是 Ping|Close|SetWinTitle|SetTitle|SetContent|SetProgress|SetRange|SetMarquee|WaitButton
  • Ping 用来测试对话框是否存在,可以看errorlevel是否等于0
  • Close 没啥好说的,就是关闭对应对话框
  • SetWinTitle SetTitle SetContent 就是设置各个文本属性,参数在末尾(也有类似的/content参数,不过得加在rpc后面)
  • SetProgress <0-65535> 设置进度位置,必须调用一次 SetRange 才会生效
  • SetRange <0-65535> <0-65535> 设置进度范围
  • SetMarquee 恢复为走马灯式的进度条
  • WaitButton 允许点击按钮,阻塞到按钮被点击为止

参数值和子命令解析规则:
大小写敏感,但是允许以 驼峰命名规则 和 下划线命名规则两种写法,
具体来说是 SetRange 和 set_range 合法,但是 Set_range 非法。

声明:
这是我业余时间做的一个小程序,因为复杂度还是有一点的,可能含有较多错误(甚至可能在目标设备上无法运行),希望大家使用之前先测试完备。
源码地址: https://github.com/codehz/condlg

下载压缩包(108kb)里会附带示例批处理,32位和64位
(另外还会附带一个 conapi.exe 用于隐藏/显示控制台,设置和获取标题,可以通过 help 子命令看帮助)
更新:
修复了select选项数量为2时会把关闭窗口也映射进去的问题。(同时增加了/cancellable选项指示是否显示关闭选项)
新特性,自动识别pipe路径,现在不以\开头时会自动使用 \\.\Pipe\ 作为前缀,感谢 @slore 的建议
另外在压缩包内增加了一个重要提示,就下面那条
更新 x2:增加了超链接解析,(只在content部分有效,语法是 <A HREF="XXXX">TEXT</A> 或者 [TEXT](XXXX) 两种格式)


rel.7z (108.48 KB, 下载次数: 391)




点评

功能强大方便使用  发表于 2023-6-28 13:40

评分

参与人数 3无忧币 +15 收起 理由
absman1972 + 5 赞一个!
m68 + 5 赞一个!
freesoft00 + 5

查看全部评分

169#
发表于 3 天前 | 只看该作者
厉害厉害
回复

使用道具 举报

168#
发表于 3 天前 | 只看该作者
功能强大方便使用
回复

使用道具 举报

167#
发表于 3 天前 | 只看该作者
能提供输入对话框吗?类似set命令
回复

使用道具 举报

166#
发表于 2024-11-15 09:31:36 | 只看该作者
这是技术流!
回复

使用道具 举报

165#
发表于 2024-11-12 20:00:45 | 只看该作者
学习
回复

使用道具 举报

164#
发表于 2024-10-16 15:41:03 | 只看该作者
学习学习,感谢分享
回复

使用道具 举报

163#
发表于 2024-10-5 10:59:58 | 只看该作者
谢谢分享
回复

使用道具 举报

162#
发表于 2024-9-26 10:50:52 | 只看该作者
谢谢分享
回复

使用道具 举报

161#
发表于 2024-9-7 21:58:08 | 只看该作者
感谢辛苦制作点赞
回复

使用道具 举报

160#
发表于 2024-8-27 16:37:58 | 只看该作者
谢谢楼主分享!收藏了
回复

使用道具 举报

159#
发表于 2024-7-23 21:17:49 | 只看该作者
谢谢分享
回复

使用道具 举报

158#
发表于 2024-7-21 17:44:31 | 只看该作者
谢谢分享。
回复

使用道具 举报

157#
发表于 2024-7-21 17:44:19 | 只看该作者
谢谢分享。
回复

使用道具 举报

156#
发表于 2024-7-20 18:15:32 | 只看该作者
确实方便,感谢分享
回复

使用道具 举报

155#
发表于 2024-7-19 21:19:10 | 只看该作者
多谢分享!!!
回复

使用道具 举报

154#
发表于 2024-6-29 10:36:11 | 只看该作者
谢谢分享,最近我在制作一个防止误操作的右键菜单,刚好需要用到这样的命令。下载鼓捣下。
回复

使用道具 举报

153#
发表于 2024-3-15 11:19:23 | 只看该作者
好好学习天天向上
回复

使用道具 举报

152#
发表于 2024-3-15 11:09:59 | 只看该作者
谢谢分享!
回复

使用道具 举报

151#
发表于 2024-3-14 17:07:35 | 只看该作者
感谢分享!下载试一下;
回复

使用道具 举报

150#
发表于 2024-3-12 17:06:27 | 只看该作者
级别不够无法下载
回复

使用道具 举报

149#
发表于 2024-3-9 11:09:22 | 只看该作者
谢谢分享
回复

使用道具 举报

148#
发表于 2024-2-22 18:16:36 | 只看该作者

谢谢分享
回复

使用道具 举报

147#
发表于 2024-2-21 23:31:53 来自手机 | 只看该作者
试学学看
回复

使用道具 举报

146#
发表于 2024-2-18 16:00:22 来自手机 | 只看该作者
学习呀。
回复

使用道具 举报

145#
发表于 2024-2-17 10:45:28 | 只看该作者
谢谢分享
回复

使用道具 举报

144#
发表于 2024-2-2 16:50:39 | 只看该作者

谢谢楼主分享!
回复

使用道具 举报

143#
发表于 2024-2-2 16:45:40 来自手机 | 只看该作者
有文件对话框么?批处理经常要选择文件或文件夹的…
回复

使用道具 举报

142#
发表于 2024-2-2 10:35:23 | 只看该作者
楼主加油~~,貌似还不够十五字(*@?@*)
回复

使用道具 举报

141#
发表于 2024-2-2 09:04:09 | 只看该作者
不错,谢谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-26 14:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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