申请及活跃时间
我正在尝试实现 CBT Hook 来完成一件简单的事情:找出哪个应用程序处于活动状态多长时间?活动意味着“用户正在与应用程序窗口交互”。
例如,用户在 MSWORD 中处理提案或用户在 Youtube 上在线冲浪。
我们需要找出以下信息:
- 应用程序的名称。
- 文档名称或URL(如果是IE / Chrome / FF等浏览器)。
- 应用程序窗口的活动时间。
我的方法是:
WH_CBT
的SetWindowsHookEx()
- 在我的回调函数
CBTProcCallBack()
中,我检查代码HCBT_ACTIVATE
。我获取窗口、应用程序和 exe 详细信息 - 记录时间。
但是,并非所有活动窗口都被捕获。
我的方法可以吗还是我错了?
I am trying to implement a CBT Hook to do one simple thing: Find out what application is active for how long? Active means "user is interacting with the application window".
For instance user working on proposal in MSWORD OR user surfing online on Youtube.
We need to find out the following:
- Name of the application.
- Name of the document or URL (if it is IE / Chrome / FF etc browsers).
- Active time of the application windows.
My approach was:
SetWindowsHookEx()
forWH_CBT
- In my callback function
CBTProcCallBack()
I check for codeHCBT_ACTIVATE
. I get the windows, application and exe details - Log the time.
However, not all the active windows get captured.
Is my approach ok OR am I going wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是一个简单的解决方案,用于找出用户打开的所有应用程序。例如,该方法是,您必须循环检查当前前景窗口是否已更改。尝试在计时器事件中执行此操作,如果先前的窗口名称与当前窗口名称不同,您可以轻松计算用户使用该应用程序的时间。
Here is a simple solution to find out what all are the applications that user has opened. The approach is, say, you will have to check in a loop if the current foreground window has changed or not. try doing it in the timer event and if the previous window name is not same as current window name, you can easily calculate the time that user has used this application.