.tcl文件_tcl打开关联文件

调用外部程序打开其关联文件一般有两种情况:

第一种:

在windows中文件已与程序自动关联,例如.docx文件会自动关联Word,.pdf文件一般会关联adobe reader或当前设置的默认pdf软件;

0b8fb7fd8df4d20dbfac80394a6e039f.png

这种情况下,直接使用如下命令即可:

‪exec cmd /c "$file_path";

这个命令的本质是调用了cmd来执行打开操作,而其对应的软件路径则由在windows注册表中由文件后缀名关联起来的。

第二种:

没有自动关联起来的文件,例如我想用notepad++打开如下这个自定义后缀的文件:

218ae4a52064200bdc5da95f5057adc5.png

首先需要知道notepad++主程序路径,如下:

d61e73a79847d90573be269010995ead.png

然后执行如下命令即可:

exec cmd /c "C:/Program Files/Notepad++/notepad++.exe" \"C:/Users/ZWT/Desktop/test/自定义后缀文件.hyperproc"

但是,有些exe主程序是不支持外部传参的,这点需要注意。


前面这两个命令可能会有一个缺点:部分第三方软件会占用当前进程导致主进程卡死。

所以一般采用多线程来打开文件,这块也分为两种:

第一种:

利用Thread库来实现,如下:

package require Thread;thread::send -async [thread::create] \[list exec cmd "/c" "$file_path"];或package require Threadthread::send -async [thread::create] \[list exec cmd "/c" "C:/Program Files/Notepad++/notepad++.exe" \"C:/Users/ZWT/Desktop/test/自定义后缀文件.hyperproc"];

第二种:

利用twapi库实现, 注意写法 ,-cmdline后面所有的参数,即使是带空格的路径,也要写在一个括号内:
package require twapitwapi::create_process "" \-cmdline "C:/Program Files/Notepad++/notepad++.exe \C:/Users/ZWT/Desktop/test/自定义后缀文件.hyperproc;

关于-cmdline的写法,可参考:

【分享】分享一款tcl/tk开发中的小工具  中的窗口操作Tab页:

b6782aaa4d41bbf8d43ffe573e219854.png

所以上面的代码,可以这样写:

package require twapitwapi::create_process "" \-cmdline "\"C:/Program Files/Notepad++/notepad++.exe\" \C:/Users/ZWT/Desktop/test/自定义后缀文件.hyperproc"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值