Visual c++ 如何计算Windows用户登录的时间(VC++) 我正在编写一个Windows服务,用于做家长控制Visual C++。 我遇到以下问题: 如何计算Windows用户今天登录的时间(以小时为单位) 当每天的时间超过指定值(例如5小时)时,如何触发从用户Windows帐户注销。

Visual c++ 如何计算Windows用户登录的时间(VC++) 我正在编写一个Windows服务,用于做家长控制Visual C++。 我遇到以下问题: 如何计算Windows用户今天登录的时间(以小时为单位) 当每天的时间超过指定值(例如5小时)时,如何触发从用户Windows帐户注销。 ,visual-c++,time,count,logoff,parental-control,Visual C++,Time,Count,Logoff,Parental Control,感谢您的帮助。 问候 要做到这一点,我想可能有几种方法。 我认为最简单的方法是使用一个计时器,它可以在服务启动或应用程序启动时启动(如果放在启动菜单中)。 为此,您可以使用与WM_定时器消息关联的SetTimer方法: 您应该使用CTime函数获取启动计时器之前的时间,例如: CTime t; t.GetCurrentTime (); timeAtLaunched=t.GetSecond(); //or GetHour() 之后,您可以在计时器函数中放置一个类似的CTime调用,以获得cur

感谢您的帮助。
问候

要做到这一点,我想可能有几种方法。 我认为最简单的方法是使用一个计时器,它可以在服务启动或应用程序启动时启动(如果放在启动菜单中)。 为此,您可以使用与WM_定时器消息关联的SetTimer方法:

您应该使用CTime函数获取启动计时器之前的时间,例如:

CTime t;
t.GetCurrentTime ();
timeAtLaunched=t.GetSecond(); //or GetHour()
之后,您可以在计时器函数中放置一个类似的CTime调用,以获得currentTime值,并计算currentTime值和timeAtLaunched值之间的差值

如果用户多次连接和断开连接,要保留一天中的连接时间,应将差值保留在文件或注册表中

要强制注销,您可以使用:

ExitWindowsEx (EWX_SHUTDOWN | EWX_FORCE, SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
  SHTDN_REASON_MINOR_UPGRADE | SHTDN_REASON_FLAG_PLANNED)