加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 如何判断Windows何时处于非活动状态

发布时间:2020-12-14 01:45:07 所属栏目:Windows 来源:网络整理
导读:只有当您没有使用计算机一段时间(例如屏幕保护程序,Google桌面索引等)时,各种程序才能执行操作. 他们怎么知道什么时候不活动?在Windows中有一些功能可以告诉你,它已经停用了多长时间,或者你必须使用某种键盘/鼠标钩来自己跟踪活动吗? 我正在使用C#,但我对
只有当您没有使用计算机一段时间(例如屏幕保护程序,Google桌面索引等)时,各种程序才能执行操作.

他们怎么知道什么时候不活动?在Windows中有一些功能可以告诉你,它已经停用了多长时间,或者你必须使用某种键盘/鼠标钩来自己跟踪活动吗?

我正在使用C#,但我对任何确定不活动的方法感兴趣.

编辑:改变了答案,提供了Shy答案背后的文本和细节(应该被接受).随意合并和删除这一个.

GetLastInputInfo功能
GetLastInputInfo函数检索最后一个输入事件的时间.

从P / Invoke粘贴在这里

此函数检索自上次用户输入以来的时间

[DllImport("user32.dll")]
static extern bool GetLastInputInfo(ref LASTINPUTINFO plii);

static int GetLastInputTime()
{
    int idleTime = 0;
    LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
    lastInputInfo.cbSize = Marshal.SizeOf( lastInputInfo );
    lastInputInfo.dwTime = 0;

    int envTicks = Environment.TickCount;

    if( GetLastInputInfo( ref lastInputInfo ) )
    {
    int lastInputTick = lastInputInfo.dwTime;

    idleTime = envTicks - lastInputTick;
    }

    return (( idleTime > 0 ) ? ( idleTime / 1000 ) : idleTime );
}

[StructLayout( LayoutKind.Sequential )]
struct LASTINPUTINFO
{
    public static readonly int SizeOf = Marshal.SizeOf(typeof(LASTINPUTINFO));

    [MarshalAs(UnmanagedType.U4)]
    public int cbSize;    
    [MarshalAs(UnmanagedType.U4)]
    public UInt32 dwTime;
}

FWIW:我在AnAppADay期间实现了全局键盘和鼠标钩.看到这个应用程序的来源 – 它非常接近你想要的.你想要的类在AnAppADay.Utils命名空间中.[由于linkrot]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读