Запуск настольного приложения с приложением в стиле Metro - PullRequest
15 голосов
/ 02 марта 2012

Есть ли способ запустить настольное приложение из приложения в стиле Metro в Windows 8?Я пытаюсь создать несколько простых ярлыков для настольных приложений, чтобы заменить значки на рабочем столе на начальном экране, которые выглядят неуместно.

Мне просто нужно что-то очень простое, желательно в C #, чтобы открыть приложение каккак только приложение загрузится.Я планирую сделать эти ярлыки для некоторых игр, фотошопа и т. Д., А не для всего, что я сделал сам.Они также предназначены только для личного использования, поэтому я могу использовать прямые пути к приложениям, таким как "C:\Program Files (x86)\Steam\steamapps\common\Skyrim\TESV.exe"

Ответы [ 5 ]

21 голосов
/ 02 марта 2012

Если вы просто хотите запустить настольное приложение, такое как (блокнот, WordPad, Internet Explorer и т. Д.), То выполните Методы процесса и 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();
}

// Эксп 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 работают в ящиках с песком окружающей среды, и нет никакого способа напрямую запустить внешнее применение.

Вы можете попробовать использовать Класс запуска - зависит от ваших потребностей, может предоставить вам возможное решение.

Проверьте это:
Могу ли я использовать Windows.System.Launcher.LauncherDefaultProgram (Uri) для вызова другого приложения в стиле metro?

Ссылка: Как запустить приложение Desktop из Metro-приложения?

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
    }
}
12 голосов
/ 26 августа 2012

Я нашел решение, которое подходит мне. Я просто создал пустой текстовый файл в своем приложении и назвал его launcher.yourappyouwanttostart, а затем выполнил его с

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

При первом запуске он запрашивает связь с этим файлом, а затем вы выбираете исполняемый файл, который хотите запустить, и с этого момента каждый раз, когда вы запускаете этот файл, ваше приложение будет запускаться.

3 голосов
/ 05 марта 2012

Я на самом деле не пробовал, если это работает, и это не очень красивое решение, но я думаю, что приложения в стиле Metro могут запускать URI.Затем вы можете создать настольную программу, зарегистрированную для пользовательской схемы URI, которая затем будет выполнять фактический запуск программы.

1 голос
/ 08 июля 2012

Что вы можете сделать, это разместить внешнюю службу WCF на вашем компьютере с отдельной установкой и подключиться к ней из приложения в стиле metro, используя localhost. Тогда вы можете делать что угодно, включая Process.Start.

0 голосов
/ 27 августа 2016

Я люблю простые вещи, поэтому я решил использовать это:

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

Это запустит «новые» Sticky Notes, поставляемые с Anniversary Update до Windows 10, но оно работает со всеми другими приложениями «Metro», которые я тестировал. Чтобы найти имя приложения метро, ​​в проводнике Windows его нужно найти в папке shell: apps, используя столбец AppUserModelId.

...