Windows命令行:如何使用活动进程打开文件?

3
我希望能够告诉一个活跃的进程使用Windows命令行打开一个文件,最好是使用内置的Windows(7+)功能(例如powershell或vbscript),但也可以使用任何解决方案。
例如,如果我有一个记事本实例打开,并知道它的进程ID为1234,那么能做类似以下的操作就好了:
notepad.exe "myfile.txt" /pid=1234
并在现有进程窗口中尝试打开该文件。
这种情况可行吗?

对于没有外部控制的程序(例如IE,Word,Autocad等),如Notepad,您可以使用VBS的wshshell.appactivate 1234wshshell.sendkeys“%FO”和“filename.ext”。这是一种不稳定的方法。 - user6017774
2个回答

0

您应该使用Autohotkey来完成此操作。尽管这也可以在powershell中完成,但与专业工具相比,它要复杂得多。在AHK中,您可以模拟打开文件(通常的快捷键Ctrl + O),然后AHK将识别对话框并插入文件名和最后按下ENTER键。这可以处理一些标准化的应用程序,但您仍然需要逐个地处理某些不寻常的应用程序。


0
作为适用于打开文件的所有应用程序的通用方式,这是不可能的。该程序必须公开某些接口(如COM接口)或侦听特定的Windows消息或网络流量,并且您的控制器必须确切地知道要调用哪种方法或发送哪个消息以触发所需的行为。
即使对于未运行的进程,也不能保证第一个命令行参数将被解释为应打开的文件名。但是,在GUI之前的日子里,没有其他方法,因此用户已经期望了很长时间。因此,这被认为是基本行为,任何面向文档的应用程序都将支持它。这在您的情况下并非如此,并且这也会引起一些问题。在具有多个文档UI的情况下,这可能有效。对于单个文档UI...可能不是一个好主意。当前文档应该被丢弃吗?附加到?允许用户选择保存、不保存或取消?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接