C# で Windows サービスを開発しています。私の要件の 1 つは、ユーザー入力を取得することです。いくつかのオプションを提示し、ユーザーに 1 つを選択させることです。ユーザーの選択に基づいて、サービスは関連付けられた操作を実行する必要があります。C# を使用して、Windows サービスでユーザー入力を取得することは可能ですか?
6 に答える
いいえ、Windows サービスはそのように設計されていません。デスクトップまたは Web アプリケーションを使用する必要があります。サービスを使用する正当な理由がある場合は、アプリケーションを作成して、入力をサービスに送信または伝達する必要があります。
データベースのオプションを管理する別のアプリケーションを作成します。ユーザーは、サービスが接続するこのデータベースを更新できます。これらの値に応じて、サービスはそれに応じて動作する必要があります。
ServiceBrokerを使用して、ユーザー入力メッセージをキューに入れ、その結果をUserIdまたは一意のユーザーキーに対して別のキューにダンプできます。
他の人が言ったように、これは不可能です。名前が示すように、Windows サービスはサービスです。Windows サービスにデータを送信する場合は、(別のアプリケーションから) ServiceController クラスを使用するか、WCF を使用して特に冒険したい場合に送信できます。
なぜこれをサービスとして開発しているのですか?
いいえ、できません。別の Windows アプリ (winforms や WPF など) を作成し、サービスと通信してユーザー入力を送信する必要があります。WCF経由で通信できます。
はい、Windows サービスからマウスとキーボードからの入力を取得することは可能です。これは、Windows サービスと直接やり取りできるという意味ではありません。サービス コードは、最後のキーボード入力とマウスの位置、およびその他のイベントを読み取ることができます。たとえば、サービスはCursor.Position
プロパティを使用して現在のマウス位置を読み取ることができます。