只有当你有一段时间没有使用电脑时,各种程序才能做些事情(例如屏幕保护程序,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划伤]
谷歌是你的朋友
基本上用这个.
在使用之前不要忘记完全准备好文档.