ペアレンタル コントロール (Visual C++) を実行するための Windows サービスを作成しています。
以下の点で困っています。
- Windows ユーザーが今日ログオンした時間をカウントする方法 (時間単位で測定された時間)
- 1 日あたりの時間が指定された値 (たとえば 5 時間) を超えたときに、ユーザーの Windows アカウントからログオフをトリガーする方法。
どんな助けでも大歓迎です。
よろしく!
ペアレンタル コントロール (Visual C++) を実行するための Windows サービスを作成しています。
以下の点で困っています。
どんな助けでも大歓迎です。
よろしく!
そのためには、いくつかの方法があると思います。
最も簡単な方法は、サービスの開始時 (またはスタートアップ メニューに配置されている場合はアプリケーションの開始時) に起動できるタイマーを使用することだと思います。
そのためには、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)