2017-08-11 11 views
-3

これを解決しようとしましたが、唯一の解決策はユーザーに表示されるウィンドウを作成することでした(0x0でもAlt-Tabスイッチャー)。タスクマネージャから非表示のWindowsフォーム用のProcessExit/Stopイベントを受信

私が非表示であることを意味するとき、Alt-Tab、Win-Tab、Ctrl-Tab、タスクバー、およびタスクマネージャの「Apps」セクションから非表示にします。

回避策はありますか?私はタスクマネージャーから予期せぬ停止を検出する必要がありますが、SetWinEventHook()からイベントを受け取るためのウィンドウが必要です。

+0

あなたの質問が何であるかは不明なので投票しています –

答えて

0

キャッチ22の種類。 WinEventsを受け取るにはウィンドウが必要です。システムには表示されないmessage-only windowを作成することができます。

しかし、システムからウィンドウを隠すということは、タスクマネージャからウィンドウを隠すことも意味します。タスクマネージャが可視ウィンドウを表示しない場合(「アプリケーション」には表示されません)、ウィンドウを正常に終了しようとせず、プロセスを強制終了させ、プロセスに送信されるシグナルはありません発生します。

正常な終了を得るには、システムからウィンドウを隠すことはできませんが、それに伴って他の副作用を受け入れる必要があります。

私がこの状況で考えることができる唯一のオプションは、メインプロセスを監視する別のプロセスを作成することです。メインプロセスが予期せず消えた場合、ウォッチャープロセスはそれに応じて反応することができます。ウォッチャーをサービスにして、管理者以外のユーザーがタスクマネージャでそれを強制終了できないようにすることができます。

関連する問題