- - PR -
プロセスを切るには
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-05 13:41
VisualStudio.NET 2005 (VB)
WindowsXPProSP2 ソリューションに A windowsアプリケーション B setup の2つのプロジェクトがあります。 Setupの実行時に Aをスタートアップに登録し、再起動後起動されるようにします。 AにはContextMenuStripコントロールを追加しており、このメニューから”終了”を 選んだ場合はプロセスを切るようにしています。 Dim myProcess As Process = Process.GetCurrentProcess() myProcess.Kill() が、アンインストールしたときはプロセスが残ってしまいます。(タスクマネージャで確認)このプロセスが残っていると電源が切れないということは確認しています。 アンインストール時に直ちにプロセスを切ることはできないのでしょうか? | ||||||||
|
投稿日時: 2007-09-05 14:19
・GUI アプリならメインウィンドウを Close() ・コンソールアプリなら Environment.Exit() という穏便な手順がありますが、それじゃ駄目なんですか?
インストーラのアンインストールのシーケンスにそういう(=起動済みのアプリケーションを終了する)カスタムアクションを追加するのが正攻法です。 が、Visual Studio のデプロイメントプロジェクト(のエディタ)はカスタムアクションの追加をまともに支援してくれないので、正攻法で行く場合は Windows SDK に含まれている Orca などのツールを駆使しなければなりません。 | ||||||||
|
投稿日時: 2007-09-05 16:42
[quote]
渋木宏明(ひどり)さんの書き込み (2007-09-05 14:19) より:
・GUI アプリならメインウィンドウを Close() ・コンソールアプリなら Environment.Exit() という穏便な手順がありますが、それじゃ駄目なんですか? Formを閉じるイベントでは Me.Visible = False Me.Enabled = False Me.WindowState = FormWindowState.Minimized e.Cancel = True として、終了しないようにしています。インジケータのアイコン(NotifyIconコントロール)ダブルクリックでformを表示させ、closeイベントで上記を行っています。loadイベントではまだformは見えない状態です。このアイコンを右クリックで終了メニューを選択すると先の投稿のような処理を行っています。 したがって現在、終了メニューを選択するとプロセスは切れますが、アンインストールではプロセスはそのまま残ります。 セットアッププロジェクトのアンインストール処理を書き換えないと無理(標準のセットアッププロジェクトでは無理)ということですね? わかりました。どうもありがとうございます。 | ||||||||
|
投稿日時: 2007-09-05 19:04
.NET 1.x ならともかく、.NET 2.0 で追加された FormClosing イベントを使えば、もっと穏便な実装が可能です。 そうすれば、「自プロセスの強制終了でアプリ終了」なんてゆー悲壮なことをしないでも済むはずです。 | ||||||||
|
投稿日時: 2007-09-05 23:47
[quote]
渋木宏明(ひどり)さんの書き込み (2007-09-05 19:04) より:
ここで挙げたソースはFormClosingのイベントの一部です。 何が足りないのでしょうか? | ||||||||
|
投稿日時: 2007-09-06 00:05
Reasonの活用 _________________ 質問する前にググレカス | ||||||||
|
投稿日時: 2007-09-06 08:57
できることはやってそのうえで投稿しています。 | ||||||||
|
投稿日時: 2007-09-06 20:04
やれやれ。シグネチャに返信がくるとは思わなかったな。 そして引用した内容は無視とはなかなかやるなぁ。 _________________ 質問する前にググレカス |