什么是编程方式检测是否特定的Windows机器目前正由一个人?

这是最简单的方法

我在考虑写一个“礼貌显示器”我们相当有限的互联网连接 - 基本上是一个办法,看看谁目前正在积极利用互联网在任何一个时间,所以当有人需要下载一个大文件,就可以尽量减少烦恼他人(和保留这些历史上的统计数据,所以当上行不会太laggy人能够预测)。我试图收集的证据的人可以再使用推断活动多个来源。

对于Windows用户来说,这将是能够看到他们是否正在打字或周围移动鼠标,或活动的一些其他同等措施非常有用。我一直使用的System.Diagnostics.Process 类,看看某些进程正在运行(在线游戏等带宽重应用程序),当它们被启动。我想,如果有一堆普通用户进程报告(火狐时,iTunes等)在最后半小时被推出,这是一个合理的选择,有一个meatbag坐在椅子上做一些事情。一旦我检测的活动,我送一个微小的HTTP POST请求(说“嘿,我还活着,做什么!”)到服务器,并在我的Linux机器上运行web应用程序被更新,以显示该用户是活动的。

我一直在使用IM的地位考虑,但不同的IM客户端似乎有不同程度的OS整合的 - 人们似乎不更新这些尽可能将是很好。像所有好的Web 2.0的公民,我当然是使用Twitter的。 ;)

免责声明:我是UNIX和Mac家伙谁避免的Windows。我摆弄周围用单.NET但在此之前从未触及的Win32 API。平缓。

有帮助吗?

解决方案

您可能想看看 GetLastInputInfo

  

GetLastInputInfo函数检索上次输入事件的时间。

这是你会打电话通过互操作 Windows API函数:

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

[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;
}

编辑:呃,你我以前不指定的问题你使用什么语言,我只是认为基于.NET的,因为你引用System.Diagonstics.Process

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top