我正在尝试编写一个小程序来跟踪用户不活动,大约30分钟后,杀死Windows 7计算机上的所有运行Adobe Reader应用程序。我们使用的PayChex软件不允许一次打开一个薪酬存根,因此,如果他们没有关闭,并且下一位员工来使用计算机,他们无法查看其薪酬存根。
也许使用批处理文件或脚本更容易,但是我知道C 相当众所周知,这就是我开始的。
检测Windows空闲是最困难的部分,但是幸运的是您有Windows 7并且可以使用IIdleTrigger
。
之后,这只是向Adobe阅读器发送窗口密封的消息的问题。查找包含付费存根的标题,以便您关闭正确的实例。
检测Windows是空闲的是最难的部分
实际上非常容易。您可以使用getLastInputInfo函数。这是我创建的程序的片段:
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;
请注意,这不是基于事件的。您应该将其放在循环中,并使用睡眠时间不时检查闲置,具体取决于您需要的频率。从您描述的内容来看,每隔几秒钟都可以。