Запуск приложений в стиле Metro приложения
есть ли способ запустить настольное приложение из приложения в стиле Metro в Windows 8? Я пытаюсь создать несколько простых ярлыков для настольных приложений, чтобы заменить значки рабочего стола на стартовом экране, которые выглядят неуместными.
Мне просто нужно что-то супер простое, желательно в C#, чтобы открыть приложение, как только приложение загружается. Я планирую сделать эти ярлыки для некоторых игр, photoshop и т. д., а не то, что я сделал сам. Они также только для личного пользования, так что Я могу использовать прямые пути к приложениям, таким как "C:Program Files (x86)SteamsteamappscommonSkyrimTESV.exe"
5 ответов
Если вы просто хотите запустить настольное приложение, например (блокнот, wordpad, internet explorer и т. д.), перейдите через Методы, Процесс и Класс 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 App.
все применения метро-стиля работают в сильно упакованном песке окружающей среды и нет способа напрямую запустить внешний приложение.
вы можете попробовать использовать пусковая класс - зависит от вашей потребности оно может обеспечьте вам возможное решение.
Ref: как запустить настольное приложение из приложения Metro?
Metro IE-специальное приложение. Нельзя вызывать исполняемый файл из приложений Metro style.
попробуйте это - я еще не тест, но, возможно, это поможет вам..
// 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
}
}
Я нашел решение, которое подходит для меня. Я просто сделал пустой текстовый файл в своем приложении и назвал его launcher.yourappyouwanttostart
а затем выполнил его с
Windows.System.Launcher.LaunchFileAsync("launcher.yourappyouwanttostart");
при первом запуске он запрашивает у вас ассоциацию для этого файла, а затем вы выбираете exe-файл, который хотите запустить, и с этого момента каждый раз, когда вы выполняете этот файл, ваше приложение будет запущено.
Я на самом деле не пробовал, если он работает, и это не очень красивое решение, но я думаю, что приложения в стиле Metro могут запускать URI. Затем вы можете создать настольную программу, зарегистрированную для пользовательской схемы URI, которая затем выполнит фактический запуск программы.
Что вы можете сделать, это разместить внешнюю службу WCF на вашем компьютере с отдельной установкой и подключиться к ней из приложения metro style с помощью localhost. Тогда вы можете делать практически все, включая процесс.Начать.
Я люблю простые вещи, поэтому моим решением было использовать это:
Process.Start("explorer", "shell:AppsFolder\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe!App")
это запустит" новые " заметки с юбилейным обновлением для Windows 10, но он работает со всеми другими приложениями "Metro", которые я тестировал. Чтобы найти имя приложения metro, из Проводника Windows вы должны найти его в shell: appsfolder, используя столбец AppUserModelId.