「C」でサービスを作成していますが、ユーザーがサービスを停止しようとすると(「OK」ボタンと「キャンセル」ボタンを使用)、警告ウィンドウを表示したいと思います。
これを実現するために利用できる特定のWindowsAPIはありますか?達成するための他の簡単な方法はありますか?
「C」でサービスを作成していますが、ユーザーがサービスを停止しようとすると(「OK」ボタンと「キャンセル」ボタンを使用)、警告ウィンドウを表示したいと思います。
これを実現するために利用できる特定のWindowsAPIはありますか?達成するための他の簡単な方法はありますか?
いいえ、これは不可能です。Windows サービスはユーザーのデスクトップと直接やり取りできないため、ユーザー インターフェイスを表示することはできません。
ただし、これは大したことではないはずです。サービスを停止および開始するには、適切な権限が必要です。デフォルトでは、管理者のみがこれらの権限を持っています。ユーザーが不用意にサービスを停止してほしくない場合は、パーミッションを利用してその問題を解決する必要があります。
サービス コントロール パネルでサービスを停止します。サービスは通常、このコントロール パネル プロセスにアクセスできないため、UI をオーバーライドして、OK/キャンセルを求めるダイアログを表示することはできません。
サービスから UI を呼び出すとサービスがハングするという難しい方法を学びました。MSDN には、回避策に関するページがここにあります。
誰にもサービスを停止させたくない場合は、停止メッセージを受け入れないことをサービス マネージャーに伝えてください。代わりに、(何らかの形式の IPC を使用して) サービスを停止するアプリケーションを提供することができ、そのアプリケーションは必要な数の警告メッセージを表示できます。
一方で、これはユーザーを苛立たせますが、必要になる可能性は低いです。デフォルトでは、サービスを停止できるのは管理者のみであり、ユーザーが正当な理由なしにサービスを停止しようとすることはほとんどありません。