私はかなり長い間見回してきましたが、これを行う良い方法を見つけることができないようです.
基本的に、私は WPF を使用する C# プロセス (可視ウィンドウを持たない) を持っており、WM_ イベントを処理する必要があります (ユーザーがログオフまたはマシンの再起動を選択したときにエレガントにシャットダウンできるようにするため) WM_CLOSE
。WM_DESTROY
を使用して関数へのポインタをSystem.Windows.InteropServices
呼び出して提供することを提案する、私が見た多くのソリューションがあります。これに関する問題は、私が知る限り、実際に表示されているウィンドウに依存していることです (この場合、ウィンドウはありません)。AddHook
WndProc
提案されているが機能しない別のWndProc
方法は、WinForm のメソッドをオーバーライドすることですが、このプロセスには目に見えるフォームやウィンドウがありません。
メッセージのみのウィンドウに言及しているものも見つかりました。まだ WM_ イベントを受け取るある種の非表示のウィンドウ。私が見たところ、これはMicrosoft.WindowsCE.Forms
アセンブリでのみ使用できます。http://msdn.microsoft.com/en-us/library/microsoft.windowsce.forms.messagewindow.aspxに示されているように、プロジェクトにこのアセンブリへの参照を追加し、MessageWindow をサブクラス化しましたが、それでも機能しないようです。WndProc 内のブレークポイントはヒットしていません。
どんな手掛かり?