我正在尝试编写一个小程序来跟踪用户的不活动状态,并在大约30分钟后杀死Windows 7计算机上所有正在运行的adobe reader应用程序。我们使用的paychex软件不允许同时打开一个以上的工资存根,因此如果他们没有关闭而下一个员工来使用计算机,他们就无法查看他们的工资存根。
使用批处理文件或脚本可能会更容易,但我对C ++的了解非常好,所以这就是我的开始。
答案 0 :(得分:1)
检测Windows是空闲的是最困难的部分,但幸运的是,您拥有Windows 7并且可以使用IIdleTrigger
。
之后,只需向Adobe Reader发送窗口关闭消息即可。查找包含工资存根名称的标题,以便关闭正确的实例。
答案 1 :(得分:0)
检测Windows是空闲的是最难的部分
实际上这很容易。您可以使用GetLastInputInfo function。这是我创建的程序的片段,它正是这样做的:
unsigned idle_time;
// get idle time
LASTINPUTINFO last_input_info;
DWORD this_time;
last_input_info.cbSize = sizeof(LASTINPUTINFO);
GetLastInputInfo(&last_input_info);
#pragma warning(suppress: 28159) // Consider using GetTickCount64() instead
this_time = GetTickCount();
idle_time = this_time - last_input_info.dwTime;
请注意,这不是基于事件的。你应该把它放在一个循环中并使用Sleep来不时检查空闲时间,具体取决于你需要的频率。根据你的描述,每隔几秒就应该没问题。