C#使用metro api启动外部应用程序

时间:2013-05-20 13:32:02

标签: c#

我正在尝试开发一个应用程序,它使用启动器类从metro应用程序启动常规.exe应用程序。 MSDN提供了样本here,stackoverflow样本为here

问题是,即使文件存在,我的地铁也会出现“找不到文件”的错误。我试图将文件放在其他驱动器上,但问题仍然存在

这是我的代码示例

// 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); 

/ *错误在上面的行.it表示找不到文件文件名,目录名或卷标语法不正确。 (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
}

1 个答案:

答案 0 :(得分:3)

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

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

我不相信它会与.exe一起使用

正确用法如下:

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

然后在默认图像查看器中打开猫的图片。

由于沙盒,这对.exe不起作用,因为.exe没有默认的开启工具。

有一些技巧可以解决这个问题,请参阅:Launching a Desktop Application with a Metro-style app

通常,您正在反对Windows 8的设计,因此您可能需要重新考虑您的方法。