使用Metro风格的应用程序启动桌面应用程序

有没有办法在Windows 8上从Metro风格的应用程序启动桌面应用程序? 我正在尝试创build一些桌面应用程序的简单快捷方式来replace开始屏幕上的桌面图标,这看起来不合适。

我只是需要一些超级简单的东西,最好在C#中,在应用程序加载后立即打开一个应用程序。 我打算为某些游戏,Photoshop等制作这些快捷键,而不是我自己做的任何东西。 他们也只是个人使用,所以我可以使用直接path应用程序,如"C:\Program Files (x86)\Steam\steamapps\common\Skyrim\TESV.exe"

Solutions Collecting From Web of "使用Metro风格的应用程序启动桌面应用程序"

如果你只是想运行一个桌面应用程序,如(记事本,写字板,Internet Explorer等),然后通过处理方法和ProcessStartInfo类

 try { // Start the child process. Process p = new Process(); // Redirect the output stream of the child process. p.StartInfo.UseShellExecute = false; p.StartInfo.FileName = "C:\Path\To\App.exe"; p.Start(); } 

// Exp 2

 // Uses the ProcessStartInfo class to start new processes, // both in a minimized mode. void OpenWithStartInfo() { ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe"); startInfo.WindowStyle = ProcessWindowStyle.Minimized; Process.Start(startInfo); startInfo.Arguments = "www.northwindtraders.com"; Process.Start(startInfo); } 

在Windows 8 Metro应用程序中,我发现了这个: 如何从Metro App启动一个外部程序 。

所有Metro风格的应用程序都在高度沙盒环境中工作,无法直接启动外部应用程序。

您可以尝试使用Launcher类 – 取决于您的需要它可能会为您提供一个可行的解决方案。

检查这个:
我可以使用Windows.System.Launcher.LauncherDefaultProgram(Uri)来调用另一个城市风格的应用程序?

参考: 如何从地铁应用程序内启动一个桌面应用程序?

Metro IE是一个特殊的应用程序。 您不能从Metro风格的应用程序调用可执行文件。

试试这个 – 我还没有测试,但可能会帮助你..

Launcher.LaunchFileAsync

 // Path to the file in the app package to launch string exeFile = @"C:\Program Files (x86)\Steam\steamapps\common\Skyrim\TESV.exe"; var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(exeFile); if (file != null) { // Set the option to show the picker var options = new Windows.System.LauncherOptions(); options.DisplayApplicationPicker = true; // Launch the retrieved file bool success = await Windows.System.Launcher.LaunchFileAsync(file, options); if (success) { // File launched } else { // File launch failed } } 

我找到了适合我的解决方案。 我只是在我的应用程序中创建了一个空文本文件,并将其命名为launcher.yourappyouwanttostart ,然后用它执行

 Windows.System.Launcher.LaunchFileAsync("launcher.yourappyouwanttostart"); 

在第一次启动时,它会要求你为这个文件建立关联,然后你选择你想运行的exe文件,并且从现在开始你每次执行这个文件,你的应用程序就会启动。

我没有真正尝试,如果它的工作,这不是一个真正的美丽的解决方案,但我猜Metro风格的应用程序可以启动一个URI。 然后,您可以创建一个桌面程序,注册一个自定义URI方案,然后执行实际的程序启动。

你可以做的是在你的计算机上安装独立安装的外部WCF服务,并使用localhost从metro风格的应用程序连接到它。 那么你可以做任何事情,包括Process.Start。

我喜欢简单的东西,所以我的解决方案是使用这个:

 Process.Start("explorer", "shell:AppsFolder\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe!App") 

这将启动与Windows 10的周年纪念更新来的“新”粘滞便笺,但它适用于我测试的所有其他“地铁”应用程序。 要从Windows资源管理器中找到metro应用程序的名称,必须使用AppUserModelId列在shell:appsfolder中找到它。