问题 从命令行在Metro应用程序中打开文件


我需要一种从命令行在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。


7276
2017-10-07 20:32


起源



答案:


如果你还在寻找答案,最好的办法 在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


8
2018-04-08 23:37



这非常接近我想要的,除了我如何知道metro风格的应用程序是否是默认的,因此,使用这种方法? - Arafangion
要了解有关协议的更多信息以及将通过特定协议打开的应用程序,请打开 Settings,选择 System,点击 Default apps侧栏上的标签,向下滚动直到找到 Choose default apps by protocol。 - Lloyd Dominic


答案:


如果你还在寻找答案,最好的办法 在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


8
2018-04-08 23:37



这非常接近我想要的,除了我如何知道metro风格的应用程序是否是默认的,因此,使用这种方法? - Arafangion
要了解有关协议的更多信息以及将通过特定协议打开的应用程序,请打开 Settings,选择 System,点击 Default apps侧栏上的标签,向下滚动直到找到 Choose default apps by protocol。 - Lloyd Dominic


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

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

您可以编写一个使用CLSID_ApplicationActivationManager的启动器应用程序 IApplicationActivationManager 至 ActivateForFile 特定的应用程序。


2
2017-10-09 22:11



我可以使用“start path / to / file.pdf”启动它,但这会在旧系统上打开命令提示符。 - Arafangion


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

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

或者从run(Win + R):

shell:AppsFolder\Microsoft.WindowsAlarms_8wekyb3d8bbwe!App

2
2017-09-14 12:15





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

cmd /C start <app-name>:

例如,要启动Slack:

cmd /C start slack:

0
2017-11-16 16:53