Launching a Desktop Application with a Metro-style app

后端 未结 5 872
温柔的废话
温柔的废话 2020-11-30 04:20

Is there a way to launch a desktop application from a Metro-style app on Windows 8? I\'m trying to create some simple shortcuts to desktop applications to replace the deskto

5条回答
  •  爱一瞬间的悲伤
    2020-11-30 04:45

    If you simply want to run a desktop application like (notepad, wordpad, internet explorer etc) then go through Process Methods and ProcessStartInfo Class

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

    On Windows 8 Metro application i discovered this: How to Start a external Program from Metro App.

    All the Metro-style applications work in the highly sand boxed environment and there is no way to directly start an external application.

    You can try to use Launcher class – depends on your need it may provide you a feasible solution.

    Check this:
    Can I use Windows.System.Launcher.LauncherDefaultProgram(Uri) to invoke another metro style app?

    Ref: How to launch a Desktop app from within a Metro app?

    Metro IE is a special app. You cannot invoke an executable from Metro style apps.

    Try this - I have not test yet but may be it will help you..

    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
        }
    }
    

提交回复
热议问题