像QQ那样,当一段时间不动就显示离开,C#怎么做?

jason_mf 2008-01-17 05:48:48
如题,并且当有操作时又怎么返回的?
...全文
271 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nik_Amis 2008-01-17
  • 打赏
  • 举报
回复
不错,偶当年用的VC写的鼠标键盘钩子,看来楼上的办法是捷径
一品梅 2008-01-17
  • 打赏
  • 举报
回复
不懂,学习,楼上的能把重点代码解释一下么?
marvintang 2008-01-17
  • 打赏
  • 举报
回复
同上
sankt 2008-01-17
  • 打赏
  • 举报
回复
The above friend's code is cool.
王集鹄 2008-01-17
  • 打赏
  • 举报
回复
api函数GetLastInputInfo可以得到用户最后输入的时间。
参考如下代码:
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential)]
struct LASTINPUTINFO
{
[MarshalAs(UnmanagedType.U4)]
public int cbSize;
[MarshalAs(UnmanagedType.U4)]
public uint dwTime;
}

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

static long GetLastInputTime()
{
LASTINPUTINFO vLastInputInfo = new LASTINPUTINFO();
vLastInputInfo.cbSize = Marshal.SizeOf(vLastInputInfo);
if (!GetLastInputInfo(ref vLastInputInfo)) return 0;
return Environment.TickCount - (long)vLastInputInfo.dwTime;
}

private void Form1_Load(object sender, EventArgs e)
{
timer1.Enabled = true;
}

private void timer1_Tick(object sender, EventArgs e)
{
Text = string.Format("用户已经{0}秒没有路过了", GetLastInputTime() / 1000);
}
cwhwin 2008-01-17
  • 打赏
  • 举报
回复
比较呆板的方法,就是设置全局变量,当窗体失去焦点时开始计数,获得焦点时计数清零。计数到设定值时就更改状态

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧