TCL在外部程序上打开多个文件

时间:2018-03-30 16:03:44

标签: windows tcl

无论如何我可以启动外部程序并等到它完全打开,然后打开其他文件/程序

示例打开一个powerpoint并在它完全加载后再打开一个word文件。

我有一个非常具体的工作程序,我可以比较这个视频播放器上的多个视频文件。如果视频播放器是打开的,那么通过管道'我可以发送多个视频,由在同一程序中单独窗口的播放器打开。问题是如果视频播放器关闭,如果我尝试启动多个视频,那么它们会在视频播放器的多个实例中打开而不是窗口化。

复制这个的简单方法可能就是说,我想在IE中打开3个网页,并且所有网页都应该在一个IE中打开但不同的标签而不是3个不同的IE。如果IE在后台打开,则3个网页可能会在同一个实例中打开,但是不同的选项卡,但如果open命令打开IE,那么它将在3个不同的IE中启动3个网页。

我试图用管道打开我的第一个文件'和fulevent处理程序,但不幸的是,你提到TCL无法从外部程序天气得到任何响应它完全打开或不完成。如果没有这些反馈,关闭管道并打开下一个视频文件会很棘手。像vwait这样的命令是另一种选择..即只是等待第一个命令的执行然后继续前进到下一个....但这更像是喷雾和祈祷,想要更精致的东西。

感谢各位帮忙

1 个答案:

答案 0 :(得分:2)

如果将open与带有管道字符前缀的列表一起使用,则可以启动子进程,其标准输入和输出绑定到Tcl I / O通道。然后,您可以从该频道中读取并等待一些事情,如果程序支持它(即控制台模式程序),它就会准备就绪。

对于像Powerpoint这样的GUI程序,你不能这样做。在Windows上,GUI程序不会附加到任何标准I / O通道,而是从父进程分离启动。为此,您最好使用tcom包来使用COM或OLE自动化。

据推测,您打算使用powerpoint打开一个powerpoint文件,以打开一个通常会使用Word的word文件。 (例如tcom::ref createobject Word.Application)。