`
izuoyan
  • 浏览: 9369250 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

鼠标闲置一段时间后自动隐藏

阅读更多

该问题来自论坛提问,两个api函数
GetLastInputInfo:获取闲置时间
ShowCursor:设置鼠标状态,这里要注意,本函数并不能直接影响鼠标状态,而是设置状态计数器,参数为True时计数器+1,反之-1,只有当计数器大于等于0时鼠标为显示,小于0时鼠标隐藏。所以可能会发生某次调用该函数而没有生效的情况。为了避免这个问题,可以用wile循环判断结果。

  1. using System;
  2. using System.Windows.Forms;
  3. using System.Runtime.InteropServices;
  4. namespace WindowsApplication5
  5. {
  6. public partial class Form1:Form
  7. {
  8. ///<summary>
  9. ///获取鼠标闲置时间
  10. ///</summary>
  11. [StructLayout(LayoutKind.Sequential)]
  12. public struct LASTINPUTINFO
  13. {
  14. [MarshalAs(UnmanagedType.U4)]
  15. public int cbSize;
  16. [MarshalAs(UnmanagedType.U4)]
  17. public uint dwTime;
  18. }
  19. ///<summary>
  20. ///获取鼠标闲置时间
  21. ///</summary>
  22. ///<paramname="plii"></param>
  23. ///<returns></returns>
  24. [DllImport( "user32.dll" )]
  25. public static extern bool GetLastInputInfo( ref LASTINPUTINFOplii);
  26. ///<summary>
  27. ///设置鼠标状态的计数器(非状态)
  28. ///</summary>
  29. ///<paramname="bShow">状态</param>
  30. ///<returns>状态技术</returns>
  31. [DllImport( "user32.dll" ,EntryPoint= "ShowCursor" ,CharSet=CharSet.Auto)]
  32. public static extern int ShowCursor( bool bShow);
  33. public Form1()
  34. {
  35. InitializeComponent();
  36. //定时期
  37. System.Windows.Forms.Timertimer= new Timer();
  38. timer.Enabled= true ;
  39. timer.Interval=100;
  40. timer.Tick+= new EventHandler(timer_Tick);
  41. }
  42. //鼠标状态计数器
  43. int iCount=0;
  44. void timer_Tick( object sender,EventArgse)
  45. {
  46. //鼠标状态计数器>=0的情况下鼠标可见,<0不可见,并不是直接受api函数影响而改变
  47. long i=getIdleTick();
  48. if (i>5000)
  49. {
  50. while (iCount>=0)
  51. {
  52. iCount=ShowCursor( false );
  53. }
  54. }
  55. else
  56. {
  57. while (iCount<0)
  58. {
  59. iCount=ShowCursor( true );
  60. }
  61. }
  62. }
  63. ///<summary>
  64. ///获取闲置时间
  65. ///</summary>
  66. ///<returns></returns>
  67. public long getIdleTick()
  68. {
  69. LASTINPUTINFOvLastInputInfo= new LASTINPUTINFO();
  70. vLastInputInfo.cbSize=Marshal.SizeOf(vLastInputInfo);
  71. if (!GetLastInputInfo( ref vLastInputInfo)) return 0;
  72. return Environment.TickCount-( long )vLastInputInfo.dwTime;
  73. }
  74. }
  75. }



分享到:
评论

相关推荐

    设置闲置时间自动锁定某一程序

    该功能允许用户自定义一段时间后自动锁定界面,从而保护用户数据安全并节省资源。此篇内容通过一段示例代码来展示如何实现这一功能。 ### 二、关键技术点解析 #### 2.1 定义变量与状态管理 在实现自动锁屏功能前...

    系统闲置自动计时

    这个功能允许程序在用户未操作计算机(如键盘和鼠标未使用)达到一定时间后执行特定的任务,例如节能、锁定屏幕或者运行定时任务。在本场景中,我们看到标签提到了"Delphi",这表明我们讨论的是使用Delphi编程语言...

    系统闲置一定时间自动关机的程序

    标题中的“系统闲置一定时间自动关机的程序”是指一种软件功能,它允许计算机在用户未进行任何操作达到设定的时间后自动关闭。这种程序通常用于节能或者是在无人使用时自动维护系统。在这个特定的案例中,这个程序是...

    Mouse Jiggler – 鼠标自动摇动小工具

    鼠标自动摇动工具,自动来回移动鼠标,避免产生空闲时间。 Mouse Jiggler 的唯一功能就是自动摇动鼠标,有两种模式: 第一种真的在遥控,肉眼可以看到鼠标在移动。 第二种 Zen 模式,鼠标本身没有移动,但系统会...

    获取键盘鼠标空闲时间实现智能关机

    标题中的“获取键盘鼠标空闲时间实现智能关机”指的是一个使用Delphi编程语言开发的程序,该程序能够监测用户的键盘和鼠标活动,并在检测到一段时间内无任何输入(即设备空闲)后自动执行关机操作。这个功能通常用于...

    QuartzDemo及iis闲置时间解决方案

    当IIS处于闲置状态,即一段时间内没有接收到任何请求时,IIS可能会自动关闭工作进程或进入节能模式,这可能导致定时任务无法按预期运行。在IIS闲置时间问题上,我们需要关注两个主要方面: 1. **IIS应用程序池设置*...

    电脑限制关机软件

    自动关机软件的工作原理是通过监控键盘和鼠标的活动,以及系统空闲时间来判断电脑是否处于闲置状态。当设定的闲置时间到达后,软件将启动关机程序,使电脑进入关机、休眠或睡眠模式。这样的功能对于办公室环境、共享...

    Foxmail邮箱怎么设置闲置时间自动锁定?.docx

    这样一来,当用户离开电脑一段时间,或主动按下快捷键时,Foxmail会自动执行锁定操作。用户下次打开邮箱时,系统会要求输入先前设置的锁定密码,从而确保邮箱的安全。 通过这个功能,Foxmail邮箱的安全性得到了显著...

    Windows中如何获取键盘和鼠标处于空闲状态的时间 源代码

    在Windows操作系统中,获取键盘和鼠标空闲时间是一项常见的需求,比如用于实现自动锁屏、节能功能或用户活动检测。本文将深入探讨如何利用Windows API函数来实现这一目标,并提供源代码示例。 首先,我们需要了解...

    一次性按钮开关帮助最大限度延长闲置时间

    这种设计可以在系统关闭且总电流消耗小于1微安的情况下,显著延长电池的闲置时间,避免消费者在购买新设备时发现需要立即充电,从而提升用户体验。 总结来说,一次性按钮开关和相关的电路设计技术,如TI的TPS3420,...

    自动关机的软件自动关机的软件自动关机的软件

    闲置关机则是在用户无操作一段时间后自动执行关机,有助于节省能源。 压缩包内的文件名“自动定时关机软件简体中文免费版V3.02.28”表明这是一个具有自动定时功能的中文免费软件,版本号为V3.02.28,意味着它已经...

    电脑自动关机软件---笔记本台式机都可以

    3. 闲置关机:如果电脑一段时间内无任何操作,比如用户离开电脑,软件可以设定在一段时间后自动关机,节约能源。 4. 电量关机:对于笔记本用户,可以在电池电量低于特定值时自动关机,防止因电量耗尽导致的数据丢失...

    windows API 获取闲置时间实现锁定计算机和关机

    在获取到闲置时间后,我们可以根据设定的阈值决定是否执行锁定或关机操作。锁定计算机通常需要用到`LockWorkStation`函数: ```cpp #include void lockComputer() { if (!LockWorkStation()) { // 锁定失败,...

    AD组策略使用技巧-如何实现超过非活动时间后注销域计算机

    本篇文章将深入探讨如何利用AD组策略实现超过非活动时间后自动注销域计算机,以确保系统资源的安全和高效。 首先,我们需要了解AD组策略的工作原理。组策略是通过组策略对象(Group Policy Objects, GPOs)来实现的...

    如何设置win7睡眠模式.docx

    Win7 睡眠模式是一种非常实用的功能,它可以在电脑闲置一段时间后自动进入睡眠状态,以节省电能和延长电池寿命。下面将对 Win7 睡眠模式的设置进行详细介绍: 什么是 Win7 睡眠模式? Win7 睡眠模式是 Windows 7 ...

    setIdleJS应用程序监视器用于探测当用户闲置和触发事件

    主要的函数`setIdle()`接受两个参数:一个是闲置时间的阈值,以毫秒为单位;另一个是当用户进入闲置状态时要调用的回调函数。例如: ```javascript setIdle(5000, function() { console.log('用户已经闲置了5秒钟'...

    野狼 自动 关机王

    4. **闲置关机**:如果电脑长时间无操作,可以设定在一段时间的闲置后自动关机,这样能有效地节省电能,同时保护电脑硬件免受过度使用的影响。 5. **任务完成后关机**:用户可以设定在某个程序运行完毕或者指定的...

    闲置土地处置整改方案参考.doc

    1. 闲置土地定义:闲置土地是指土地使用者在取得土地使用权后,未经原批准用地机关同意,超过规定期限未动工建设的建设用地。这种情况包括三种常见情形:(1) 土地出让合同未约定或批准文件未规定动工期限,满一年未...

    校园闲置物品交易平台代码 java校园闲置物品交易平台代码

    校园闲置物品交易平台代码 java校园闲置物品交易平台代码 基于SSM的校园闲置物品交易平台代码 1、校园闲置物品交易...有任何使用问题欢迎随时与博主沟通,第一时间进行解答! 3、解压说明:本资源需要电脑端使用Wi

    8700键盘自动上锁软件

    这款软件的出现,极大地简化了这一过程,让手机在闲置一段时间后自动进入键盘锁定状态,提高了使用体验。 BlackBerry 8700是一款经典的商务智能手机,以其全键盘和强大的电子邮件功能深受用户喜爱。然而,传统的...

Global site tag (gtag.js) - Google Analytics