Delphi Windows サービス内で Windows ログオンおよびログオフ イベントを受信する方法を知りたいです。サービス自体は既に構築されているので、設定/ログ ウィンドウを開く systray アイコンを表示したいと思います。そのアイコンを表示するには、ユーザーがログインしているかどうかを知る必要があります...
C# の「システム イベント通知サービス」に関する情報を見たことがありますが、デルファイに関する情報はほとんどありません。
Delphi Windows サービス内で Windows ログオンおよびログオフ イベントを受信する方法を知りたいです。サービス自体は既に構築されているので、設定/ログ ウィンドウを開く systray アイコンを表示したいと思います。そのアイコンを表示するには、ユーザーがログインしているかどうかを知る必要があります...
C# の「システム イベント通知サービス」に関する情報を見たことがありますが、デルファイに関する情報はほとんどありません。
ユーザー セッションは RDS (リモート デスクトップ サービス- 以前のターミナル サービス) テクノロジに基づいているため、 WTSRegisterSessionNotification / WTSRegisterSessionNotificationEx API を試すことができます。次のようなさまざまなイベントに関する情報を提供します。
イベントに基づいて、ユーザーのセッション ID を見つけることができます。次に、この特定のセッションでプロセスを開始できます (つまり、特定の RDS セッションにプログラムを挿入します)。たとえば、アイコンを表示するユーザーのセッションでプロセスを開始できます。このプロセスは、名前付きパイプ、メモリ マップ ファイルなどを介してサービスと通信できます。
個人的には、これらのイベントを使用して、ユーザーがセッションから切断したときに GUI 集中型の作業を停止します (つまり、ラベル、リストボックス、メモなどの更新を停止します)。
** これらの API には、通知を受け取るウィンドウが必要です。サービスでは、メッセージ ループを使用して非表示のサービスを作成する必要があります (別のトピック)。