私は同僚からこのアプリケーション(Visual C ++で記述されたWindowsフォームアプリケーション)を持っていますが、いくつかの深刻な問題に直面しています。アプリケーションはサービスでも通常のアプリケーションでもありません。つまり、GUIがありますが、ほとんどの場合、バックグラウンドで実行されます(サービスとして反応するはずですが、そうではありません)。このアプリケーションはユーザーがログオフするのを妨げています、そして私はそれをすることができる必要があります。
WM_QUERYENDSESSION
ユーザーがログオフしようとすると、Windowsが実行中のすべてのアプリケーションにメッセージを送信することを知っています。関数でこのメッセージをキャッチしWndProc()
、アプリケーションを強制的に強制終了しようとしましたが、機能するのは1回だけです。再度ログインしてログオフしようとしても、アプリケーションが閉じないため、操作が終了しません。
イベントを使用しようとするSessionEnding
と、アプリケーションはシステムトレイに置かれ、ログオフせずにそこに残りますが、これは、Form_Closing
メソッドがプログラムを閉じる代わりにこの操作を実行するためだと思います(これは要件であり、変更できません) )。
もう1つの有用な情報は、HKLM
レジストリにエントリがあり、このアプリケーションのインスタンスが常に2つ実行されているため、アプリケーションが自動的に起動することです(一方は他方を監視し、クラッシュした場合は再起動する必要がありますが、「手動」の場合は再起動しないでください)。シャットダウン)。
どんな提案でも好評です。
ありがとう。