Запуск приложения для настольных компьютеров с помощью приложения в стиле Metro

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

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

Ответы

Ответ 1

Если вы просто хотите запустить настольное приложение, например (блокнот, wordpad, интернет-проводник и т.д.), перейдите Методы обработки и Класс 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.

Все приложения в стиле метрополитена работают в очень песочнице окружающей среды, и нет никакого способа напрямую начать внешний приложение.

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

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

Ссылка: Как запустить настольное приложение из приложения 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
    }
}

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

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