【问题标题】:windows command line: open file with active process?windows命令行:打开带有活动进程的文件?
【发布时间】:2016-05-20 23:02:49
【问题描述】:

我希望能够告诉活动进程最好使用 Windows 命令行打开文件——但任何使用内置 Windows (7+) 功能(例如 powershell 或 vbscript)的解决方案也可以。

例如,如果我打开了一个记事本实例并且知道它的 processid 是 1234,那么能够执行以下操作会很棒:

notepad.exe "myfile.txt" /pid=1234

并让记事本尝试在现有进程的窗口中打开文件。

这可能吗?

【问题讨论】:

  • 对于记事本,一个没有外部控制的程序(不像IE、Word、Autocad等)你可以使用VBS的wshshell.appactivate 1234wshshell.sendkeys "%FO" & "filename.ext"。这是一种古怪的做事方式。

标签: windows powershell command-line vbscript cmd


【解决方案1】:

您应该为此使用 Autohotkey。虽然这也可以在 powershell 中完成,但它比在专用工具中要复杂得多。在 AHK 中,您将模拟打开文件(通常的快捷键 Ctrl + O),然后 AHK 将识别对话框并在末尾插入文件名和 ENTER。这将处理许多标准化的应用程序,但您仍需要根据具体情况处理一些不寻常的应用程序。

【讨论】:

    【解决方案2】:

    作为一种适用于所有打开文件的应用程序的通用方式,这是不可能的。程序必须公开一些接口(如 COM 接口)或监听特定的 windows 消息或网络流量,并且您的控制器必须确切知道要调用什么方法或发送什么消息来触发所需的行为。

    即使对于未运行的进程,也不能保证第一个命令行参数将被解释为应打开的文件的名称。然而,在 GUI 之前的日子里,没有其他方法,所以用户已经期待了很长时间。因此,这被认为是基本行为,任何面向文档的应用程序都将支持它。您的情况并非如此,它也会引发一些问题。使用多文档 UI,它可以工作。使用单个文档 UI……可能不是一个好主意。是否应该丢弃当前文档?附加到?允许用户保存是、保存否还是取消?

    【讨论】:

      猜你喜欢
      • 2019-05-26
      • 2018-05-28
      • 1970-01-01
      • 2021-03-08
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多