hal*_*rty 5 .net c# idle-processing
我只需要在我的应用程序中使用用户空闲检测(每个"我的应用程序实例").
我不能使用GetLastInputInfo,因为是特定于会话的用户输入:
GetLastInputInfo 不在所有正在运行的会话中提供系统范围的用户输入信息.相反,GetLastInputInfo 仅为调用该函数的会话提供特定于会话的用户输入信息.
有什么建议 ?
我假设您要检测空闲时间,但仅在应用程序处于活动状态时才会检测.然后,您必须准确定义您的应用程序处于活动状态的含义.当您的应用程序处于活动状态时(根据您自己的定义),您可以定期调用GetLastInputInfo来确定应用程序处于活动状态时的空闲时间(例如,使用某种计时器).
Windows具有前景窗口的概念,可以使用GetForegroundWindow重试当前前景窗口.您可以使用GetWindowThreadProcessId查找拥有前台窗口的进程的进程ID.如果该进程ID是您的进程ID,即使您的应用程序有多个窗口,您也知道您是前台进程.您必须定期进行此检测,就像检查空闲时间一样.
您不应该GetLastInputInfo只关心提供有关会话的信息.如果多个用户登录到同一台Windows计算机上,则每个用户都有自己的会话,但另一个用户在会话中处于空闲状态或不处理状态不应影响您检测应用程序用户是否空闲的方式.
| 归档时间: |
|
| 查看次数: |
3486 次 |
| 最近记录: |