はじめに
もともと起動用のアプリから目的のアプリを起動する仕組みのシステムで、以下のような変更が必要となりました。
- 今まで通り起動用アプリから目的のアプリを起動するパターン
- 目的のアプリを直接起動するパターン
起動用アプリは既存のアプリでおそらくVBで作られており変更もできないこともあり、目的のアプリを修正して対応を考えましたがうまくいきませんでした。
そこでC++/CLIで起動するアプリを選択するアプリを作成することにしました。
例によってC++/CLIをよく知っている人に教えてもらったので、まとめてみました。
別アプリを起動する方法
別アプリを起動するだけならば次の方法で可能です。
using namespace System::Diagnostics; // コマンドライン引数がない場合 Process::Start("別アプリのパス名"); // コマンドライン引数がある場合 Process::Start("別アプリのパス名", "コマンドライン引数");
今回は、ウィンドウの表示形式を指定したかったため次の方法にしました。
using namespace System::Diagnostics; /// /// 別のアプリを起動します。 /// @param exeName 別のアプリのパス名 /// @param args コマンドライン引数 /// void StartProcess(String^ exeName, String^ args) { // ProcessStartInfoはプロセスを起動するときに使用する値を設定するために使用します。 ProcessStartInfo^ startInfo = gcnew ProcessStartInfo(exeName); // 起動するアプリのウィンドウの表示方法を通常に設定します。 startInfo->WindowStyle = ProcessWindowStyle::Normal; // コマンドライン引数を指定します。 startInfo->Arguments = args; // 指定されたアプリを起動します。 Process::Start(startInfo); }
API Reference
ProcessStartInfoプロパティ
Process::Startメソッド
おわりに
通常別のアプリを起動することはあまりないですが、知っていると何かの時に役に立つかもしれません。