0

ペアレンタル コントロール (Visual C++) を実行するための Windows サービスを作成しています。

以下の点で困っています。

  • Windows ユーザーが今日ログオンした時間をカウントする方法 (時間単位で測定された時間)
  • 1 日あたりの時間が指定された値 (たとえば 5 時間) を超えたときに、ユーザーの Windows アカウントからログオフをトリガーする方法。

どんな助けでも大歓迎です。
よろしく!

4

1 に答える 1

0

そのためには、いくつかの方法があると思います。
最も簡単な方法は、サービスの開始時 (またはスタートアップ メニューに配置されている場合はアプリケーションの開始時) に起動できるタイマーを使用することだと思います。
そのためには、WM_TIMER メッセージに関連付けられた SetTimer メソッドを使用できます:
http://msdn.microsoft.com/en-us/library/ms644906(v=vs.85).aspx

たとえば、CTime関数を使用して、タイマーが起動する前に時間を取得する必要があります。

CTime t;
t.GetCurrentTime ();
timeAtLaunched=t.GetSecond(); //or GetHour()

その後、同様の CTime 呼び出しをタイマー関数内に配置して、currentTime 値を取得し、currentTime 値と timeAtLaunched 値の差を計算できます。

ユーザーが何度も接続と切断を行った場合に 1 日の接続時間を保持するには、差分値をファイルまたはレジストリ内に保持する必要があります。

ログオフを強制するには、次を使用できます。

ExitWindowsEx (EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
  SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED)
于 2011-04-15T07:16:43.573 に答える