【问题标题】:Is there a way to check to see if the user is currently idle?有没有办法检查用户当前是否空闲?
【发布时间】:2010-09-06 08:37:31
【问题描述】:

互联网上有一些文档显示,如果用户当前处于空闲状态,Windows 会更改 NotifyIcon.BalloonTipShown 命令的行为,这是detected by checking for keyboard and mouse events。我目前正在开发一个应用程序,该应用程序大部分时间都在系统托盘中,但不时会弹出多个气球提示,我想防止用户在当前离开时错过其中的任何一个系统。由于如果显示一个新的气球提示,当前显示的所有气球提示都会被破坏,所以如果用户不在,我想推迟显示它们。

因此,如果应用程序被最小化到系统托盘,是否有任何方法可以检查用户当前是否处于空闲状态?

【问题讨论】:

    标签: .net windows user-interface tray


    【解决方案1】:

    Win32的LASTINPUTINFO函数怎么样?

    using System.Runtime.InteropServices;
    
    [DllImport("User32.dll")] 
    static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);
    
    struct LASTINPUTINFO 
    {
        public uint cbSize;
        public uint dwTime;
    }
    

    【讨论】:

    【解决方案2】:

    托管代码

    每秒检查一次鼠标的位置。如果用户有新消息,请按住它们,直到您检测到鼠标移动。

    非托管代码

    Detecting Idle Time with Mouse and Keyboard Hooks

    【讨论】:

      【解决方案3】:

      感谢您的回复,我最终选择了 GetLastInputInfo 函数,因为它在我正在开发的应用程序中实现起来非常简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-01
        • 2019-06-01
        • 2021-12-21
        • 2020-04-03
        • 1970-01-01
        • 2014-10-14
        • 2012-10-19
        • 2011-01-30
        相关资源
        最近更新 更多