c#启动带有metro api的外部应用程序

本文关键字:外部 应用程序 api metro 启动 | 更新日期: 2023-09-27 18:14:21

我正在尝试开发一个应用程序,该应用程序使用启动器类从metro应用程序启动常规。exe应用程序。MSDN在这里提供了一个示例,而stackoverflow示例在这里

问题是,我的地铁给出错误的"文件未找到",即使文件在那里。我也尝试过将文件放在其他驱动器上,但问题仍然存在

这是我的代码示例

// Path to the file in the app package to launch
string imageFile = @"E:'App.exe"; 
var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(imageFile); 

/*上面的错误行。它说文件没有找到文件名,目录名或卷标语法不正确。(Exception from HRESULT: 0x8007007B)*/

if (file != null)
{
    // Launch the retrieved file
    var success = await Windows.System.Launcher.LaunchFileAsync(file);
    if (success)
    {
        // File launched
    }
    else
    {
        // File launch failed
    }
}
else
{
    // Could not find file
}

c#启动带有metro api的外部应用程序

LaunchFileAsync用于在其默认程序中启动文件。

http://msdn.microsoft.com/library/windows/apps/Hh701461

我不相信它会工作与。exe

正确的用法是:

LaunchFileAsync("images''picturesofcats.png"); 

这将在默认的图像查看器中打开一张猫的图片。

由于沙箱的原因,这对。exe不起作用,因为。exe没有默认的打开器。

有一些技巧可以解决这个问题,参见:使用metro风格的应用程序启动桌面应用程序

一般来说,你这样做是在违背Windows 8的设计,所以你可能需要重新考虑你的方法。