web-dev-qa-db-ja.com

Metroスタイルのアプリでデスクトップアプリケーションを起動する

Windows 8のMetroスタイルのアプリからデスクトップアプリケーションを起動する方法はありますか?デスクトップアプリケーションへの簡単なショートカットをいくつか作成して、スタート画面のデスクトップアイコンを置き換えようとしています。

アプリが読み込まれるとすぐにアプリケーションを開くには、できればC#で非常にシンプルなものが必要です。自分で作ったものではなく、ゲームやフォトショップなどでこれらのショートカットを作成する予定です。また、個人的な使用のみを目的としているため、"C:\Program Files (x86)\Steam\steamapps\common\Skyrim\TESV.exe"などのアプリケーションへの直接パスを使用できます。

15
JacobTheDev

(メモ帳、ワードパッド、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アプリから外部プログラムを開始する方法

すべての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
    }
}
21
Niranjan Singh

私に適した解決策を見つけました。アプリで空のテキストファイルを作成し、それをlauncher.yourappyouwanttostartと呼んで、次のコマンドで実行しました。

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

最初の起動時に、このファイルの関連付けを求められます。次に、実行するexeファイルを選択すると、これ以降、このファイルを実行するたびに、アプリが起動します。

12

それが機能するかどうかは実際に試したことがなく、実際には美しいソリューションではありませんが、MetroスタイルアプリはURIを起動できると思います。次に、実際のプログラムの起動を行うカスタムURIスキームに登録されたデスクトッププログラムを作成できます。

3
Apollo

実行できるのは、コンピューターで外部WCFサービスを個別にインストールしてホストし、ローカルホストを使用してメトロスタイルのアプリケーションから接続することです。その後、Process.Startを含むほとんどすべてのことを実行できます。

1
ghord

私は単純なものが大好きなので、私の解決策はこれを使用することでした:

Process.Start("Explorer", "Shell:AppsFolder\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe!App")

これにより、Windows10のアニバーサリーアップデートに付属する「新しい」付箋が開始されますが、テストした他のすべての「メトロ」アプリで動作します。メトロアプリの名前を見つけるには、Windowsエクスプローラーから、AppUserModelId列を使用してShell:appsfolderで名前を見つける必要があります。

0