【问题标题】:Opening a file in a Metro app from command line从命令行在 Metro 应用程序中打开文件
【发布时间】:2021-07-27 21:43:55
【问题描述】:

我需要一种从命令行在 Metro 应用程序中打开文件的方法。

到目前为止,我已经弄清楚如何在没有任何第三方脚本的情况下从命令行启动应用程序

explorer shell:AppsFolder\Microsoft.Reader_8wekyb3d8bbwe!Microsoft.Reader

但我还没有弄清楚如何包含文件名。

启动

explorer shell:AppsFolder\Microsoft.Reader_8wekyb3d8bbwe!Microsoft.Reader example.pdf

只是打开一个默认的资源管理器窗口。

Windows 8 专家对如何在没有任何第三方工具/cmdlet/等的情况下完成此任务有任何想法吗?

注意:事实上,我使用的是 Windows 10,但我猜如果有 Windows 8 / 8.1 的方式,它也适用于 10。

【问题讨论】:

    标签: command-line windows-8 microsoft-metro command-line-arguments windows-10


    【解决方案1】:

    如果您仍在寻找答案,在 Metro 应用程序中打开文件的最佳方法 是像普通应用程序协议那样使用执行字符串。执行字符串如下所示:

    bingnews:[arguments, can be left blank.]
    microsoftvideo:[arguments, can be left blank.]
    netflix:[arguments, can be left blank.]
    

    因此,要启动 netflix,只需在命令行中输入 Start netflix:

    要查找应用程序的执行字符串,请转到此处:控制面板\程序\默认程序\设置关联


    更多信息和示例可以在这里找到。

    http://windowsitpro.com/windows-8/opening-windows-8-apps-command-prompt-or-script

    http://www.itsjustwhatever.com/2012/10/28/launch-windows-8-metro-apps-from-a-desktop-shortcut-or-command-line/


    请注意:要在没有协议的情况下打开应用程序(未在注册表中或“设置关联”下列出的应用程序),请使用 OP 的方法:

    explorer shell:AppsFolder\[appuid]![appfullname]

    应用 UID 是不带版本号的文件夹名称。例如,

    4DF9E0F8.Netflix_2.11.0.8_x64__mcm4njqhnhss8

    变成

    4DF9E0F8.Netflix_mcm4njqhnhss8

    应用全名是[App author].[App name],例如4DF9E0F8.Netflix。 4DF9E0F8是作者,Netflix是名字。

    把它们放在一起得到

    explorer shell:AppsFolder\4DF9E0F8.Netflix_mcm4njqhnhss8!4DF9E0F8.Netflix

    【讨论】:

    • 这与我想要的非常接近,除了我如何知道 Metro 风格的应用程序是否是默认的,因此要使用这种方法?
    • 要了解有关协议的更多信息,以及将通过特定协议打开哪个应用程序,请打开 Settings,选择 System,单击侧边栏上的 Default apps 选项卡,然后向下滚动,直到您找到Choose default apps by protocol
    【解决方案2】:

    商店应用程序只能由 shell 启动。所以试试这个:

    explorer.exe shell:AppsFolder\Microsoft.WindowsAlarms_8wekyb3d8bbwe!App
    

    或从运行(Win+R):

    shell:AppsFolder\Microsoft.WindowsAlarms_8wekyb3d8bbwe!App
    

    【讨论】:

      【解决方案3】:

      如果应用程序是默认处理程序,那么您可以启动文件或协议。从命令行将文件启动到非默认处理程序中没有一种很好的内置方法。

      Windows 应用商店应用并非设计为从命令行运行,也没有直接的方法可以从命令行启动它们。处理特定文件或协议的应用程序通过FileActivatedEventArgsProtocolActivatedEventArgs 而不是命令行参数接收它们

      您可以编写一个启动器应用程序,该应用程序使用 CLSID_ApplicationActivationManager 的 IApplicationActivationManagerActivateForFile 特定应用程序。

      【讨论】:

      • 我可以使用“start path/to/file.pdf”启动它,但这会在旧系统上打开一个命令提示符。
      【解决方案4】:

      我发现将命令行参数传递给 shell 命令所针对的可执行文件的最佳方式是通过 Windows 启动命令。

      使用您的示例,您将得到以下结果:

      start "" shell:AppsFolder\Microsoft.Reader_8wekyb3d8bbwe!Microsoft.Reader example.pdf

      我没有安装 Microsoft.Reader,因此无法对其进行测试。但是,我可以验证此模式是否适用于 Windows 终端。在这种情况下,我向它传递了一个命令行参数来告诉它我要打开哪个配置文件。

      start "" shell:AppsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App new-tab -p "GitBash"

      此处启动命令的第一个参数——空字符串——只是窗口的标题。

      您也可以将它与cmd /c 配对,我发现它对于某些启动器应用程序是必需的,例如我个人最喜欢的 SlickRun:

      cmd /c start "" shell:AppsFolder\Microsoft.WindowsTerminal_8wekyb3d8bbwe!App new-tab -p "GitBash"

      我有一个blog post,其中包含有关从命令行运行现代应用程序的更多信息,您可能会发现这些信息有助于构建这些荒谬的钝命令。

      【讨论】:

      • 有效。经过大量研究发现。谢谢。但我想把整个事情和参数放在一个快捷方式中,并且只适用于 cmd /c。但是 cmd 窗口会闪烁,这破坏了乐趣。
      • @user173399 - 可以在此处找到有关简单可见 cmd-window 问题的各种解决方法:superuser.com/questions/62525/…
      【解决方案5】:

      不确定它是否适用于 Windows 8,但在 Windows 10 上我使用这个:

      cmd /C start <app-name>:
      

      例如,启动 Slack:

      cmd /C start slack:
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-27
        • 1970-01-01
        • 1970-01-01
        • 2017-03-05
        • 2011-02-04
        • 2012-05-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多