トップ回答者
プログラムからClickOnceアプリケーションを起動・停止する

質問
-
お世話になっております。ChipStarです。
プログラム中からClickOnceアプリケーションを起動したり、停止したりしたいと思っています。
現在、起動方法を調べた結果、以下の2つの方法を見つけたのですが、これらの方法で起動したアプリケーションを同じくプログラム中から停止する方法がわかりません。
ご教授願えないでしょうか。
起動方法①
System.Windows.Forms.WebBrowser browser = new System.Windows.Forms.WebBrowser();
browser.Url = new System.Uri(http://XXXXXXXX/XXX/XXX.application);
起動方法②
System.Diagnostics.Process.Start(http://XXXXXXXX/XXX/XXX.application);
*この起動方法だと、アプリケーション起動まえに一瞬IEが立ち上がってくるため、あまり使えないと思っています。
以上、宜しくお願い致します。
回答
-
ChipStarさん、こんにちは。
フォーラムオペレータの高橋春樹です。
MSDNフォーラムのご利用ありがとうございます。Click Onceアプリケーションの停止方法について、すこし調べてみました。
既にご存知かもしれませんが、CloseMainWindowを利用する方法は如何でしょうか?
CloseMainWindowは、システム メニューを使用してアプリケーションのメイン ウィンドウを閉じる時と、同じ動作になります。Process.CloseMainWindow メソッド
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.closemainwindow.aspx起動方法①の停止
System.Diagnostics.Process[] aProcess = System.Diagnostics.Process.GetProcessesByName("SampleApplication"); foreach (System.Diagnostics.Process process in aProcess){ process.CloseMainWindow(); process.Close(); }
その他、プロセス名を指定してkillするというやり方もあるのですが
アプリケーションの都合を考えずに終了させる事になるので、あまりお勧めはしません(^-^;)この情報が少しでも皆様のお役に立てれば幸いと思っています。
もし、他に良い方法がありましたら、
ご投稿の程、よろしくお願いします!
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹- 編集済み 高橋 春樹 2009年6月23日 3:20
-
起動については次の記事が参考になると思います。
ClickOnceアプリケーションを他から起動する方法 - Kazzzの日記
http://d.hatena.ne.jp/Kazzz/20060326/p1
ClickOnceアプリケーションを他から起動する方法(その2) - Kazzzの日記
http://d.hatena.ne.jp/Kazzz/20060404/p2- 回答としてマーク sk7474 2009年7月28日 7:33
-
ChipStarさん、こんにちは。
既にご存知かも知れませんが、プロセスIDを使えば厳密にプロセスを引き当てる事ができます。
System.Diagnostics.Process[] aProcess = System.Diagnostics.Process.GetProcessesByName("SampleApplication");
foreach (System.Diagnostics.Process process in aProcess){
if(process.id == 終了させたいプロセスのID){
process.CloseMainWindow();
process.Close();
}
}
ClickOnceアプリケーション起動時になんとかプロセスIDを取得すれば、
終了したいプロセスを終了させる事ができるんですが・・・・
そのプロセスIDの取得が難しそうですね。どなたか良いアイデアのある方がいらっしゃいましたら、ご投稿の程、
よろしくお願いします。
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹- 回答としてマーク sk7474 2009年7月28日 7:33
すべての返信
-
ChipStarさん、こんにちは。
フォーラムオペレータの高橋春樹です。
MSDNフォーラムのご利用ありがとうございます。Click Onceアプリケーションの停止方法について、すこし調べてみました。
既にご存知かもしれませんが、CloseMainWindowを利用する方法は如何でしょうか?
CloseMainWindowは、システム メニューを使用してアプリケーションのメイン ウィンドウを閉じる時と、同じ動作になります。Process.CloseMainWindow メソッド
http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.closemainwindow.aspx起動方法①の停止
System.Diagnostics.Process[] aProcess = System.Diagnostics.Process.GetProcessesByName("SampleApplication"); foreach (System.Diagnostics.Process process in aProcess){ process.CloseMainWindow(); process.Close(); }
その他、プロセス名を指定してkillするというやり方もあるのですが
アプリケーションの都合を考えずに終了させる事になるので、あまりお勧めはしません(^-^;)この情報が少しでも皆様のお役に立てれば幸いと思っています。
もし、他に良い方法がありましたら、
ご投稿の程、よろしくお願いします!
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹- 編集済み 高橋 春樹 2009年6月23日 3:20
-
起動については次の記事が参考になると思います。
ClickOnceアプリケーションを他から起動する方法 - Kazzzの日記
http://d.hatena.ne.jp/Kazzz/20060326/p1
ClickOnceアプリケーションを他から起動する方法(その2) - Kazzzの日記
http://d.hatena.ne.jp/Kazzz/20060404/p2- 回答としてマーク sk7474 2009年7月28日 7:33
-
ChipStarさん、こんにちは。
既にご存知かも知れませんが、プロセスIDを使えば厳密にプロセスを引き当てる事ができます。
System.Diagnostics.Process[] aProcess = System.Diagnostics.Process.GetProcessesByName("SampleApplication");
foreach (System.Diagnostics.Process process in aProcess){
if(process.id == 終了させたいプロセスのID){
process.CloseMainWindow();
process.Close();
}
}
ClickOnceアプリケーション起動時になんとかプロセスIDを取得すれば、
終了したいプロセスを終了させる事ができるんですが・・・・
そのプロセスIDの取得が難しそうですね。どなたか良いアイデアのある方がいらっしゃいましたら、ご投稿の程、
よろしくお願いします。
マイクロソフト株式会社 フォーラム オペレータ 高橋春樹- 回答としてマーク sk7474 2009年7月28日 7:33