vb.net winform实现窗体空闲时间的检测

原创 2018年04月17日 13:31:03

功能:如果在指定时间内,用户没有进行鼠标和键盘的操作,则认定空闲,从而进行响应操作
Public Class frmSetting
    Implements IMessageFilter
    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Application.AddMessageFilter(Me)
    End Sub
    Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements System.Windows.Forms.IMessageFilter.PreFilterMessage
        '==Retrigger timer on keyboard and mouse messages
        If (m.Msg >= &H100 And m.Msg <= &H109) Or (m.Msg >= &H201 And m.Msg <= &H209) Then
            'Do your action
        End If
        Return False
    End Function
所有鼠标以及键盘的操作信息都会先进入PreFilterMessage方法,注意此函数若是返回True,则此消息将不会被发送到相应的事件,即事件被屏蔽了

关于Mouse input 和 Keyboard input 的m.Msg的值分别代表什么意义,我从微软官网摘抄下来了

大家可以选择自己需要监控信息
WM_CAPTURECHANGED               0x0215     
WM_LBUTTONDBLCLK                0x0203
WM_LBUTTONDOWN                  0x0201
WM_LBUTTONUP                    0x0202
WM_MBUTTONDBLCLK                0x0209
WM_MBUTTONDOWN                  0x0207
WM_MBUTTONUP                    0x0208
WM_MOUSEACTIVATE                0x0021
WM_MOUSEHOVER                   0x02A1
WM_MOUSEHWHEEL                  0x020E
WM_MOUSELEAVE                   0x02A3
WM_MOUSEMOVE                    0x0200
WM_MOUSEWHEEL                   0x020A
WM_NCHITTEST                    0x0084
WM_NCLBUTTONDBLCLK              0x00A3
WM_NCLBUTTONDOWN                0x00A1
WM_NCLBUTTONUP                  0x00A2
WM_NCMBUTTONDBLCLK              0x00A9
WM_NCMBUTTONDOWN                0x00A7
WM_NCMBUTTONUP                  0x00A8
WM_NCMOUSEHOVER                 0x02A0
WM_NCMOUSELEAVE                 0x02A2
WM_NCMOUSEMOVE                  0x00A0
WM_NCRBUTTONDBLCLK              0x00A6
WM_NCRBUTTONDOWN                0x00A4
WM_NCRBUTTONUP                  0x00A5
WM_NCXBUTTONDBLCLK              0x00AD
WM_NCXBUTTONDOWN                0x00AB
WM_NCXBUTTONUP                  0x00AC
WM_RBUTTONDBLCLK                0x0206
WM_RBUTTONDOWN                  0x0204
WM_RBUTTONUP                    0x0205
WM_XBUTTONDBLCLK                0x020D
WM_XBUTTONDOWN                  0x020B
WM_XBUTTONUP                    0x020C
WM_GETHOTKEY                    0x0033
WM_SETHOTKEY                    0x0032
WM_ACTIVATE                     0x0006
WM_APPCOMMAND                   0x0319
WM_CHAR                         0x0102
WM_DEADCHAR                     0x0103
WM_HOTKEY                       0x0312
WM_KEYDOWN                      0x0100
WM_KEYUP                        0x0101
WM_KILLFOCUS                    0x0008
WM_SETFOCUS                     0x0007
WM_SYSDEADCHAR                  0x0107
WM_SYSKEYDOWN                   0x0104
WM_SYSKEYUP                     0x0105
WM_UNICHAR                      0x0109


Winform下多语言的一种简单实现

思路:基于c#的Winform程序,涉及到多语言的资源集中到字符串和图片上,资源保存在资源文件中,针对每一种语言设置一个资源文件,界面上的文字和图片等资源从资源文件中通过ResourceManager...
  • wsxwang
  • wsxwang
  • 2018-02-19 23:13:41
  • 104

实现无边框窗体的拖动及窗体大小变化

无边框窗体如何实现用鼠标拖动窗体边缘实现窗体大小变动呢?通过以下几个步骤即可实现: 1.实现WM_NCHITTEST消息,实现四条边框的模拟 2.实现WM_NCLBUTTONDOWN,发送窗体拖曳...
  • jiangqin115
  • jiangqin115
  • 2014-12-23 14:34:01
  • 916

Winform中多国语言窗体的设计以及.NET中资源文件的使用

      Winform中多国语言窗体的设计以及.NET中资源文件的使用    最近在做一些多国语言的软件,就学习了一下.NET中的多国语言相应知识,受益不少,下面我就简单介绍一下winform中关...
  • tjvictor
  • tjvictor
  • 2006-12-27 11:50:00
  • 9293

VB.net Winform多国语言的实现

 在.net中实现多国语言的方法其实是很简单的。下面就做一个示例跟大家一步一步地介绍:首先新建一个VB.net的项目。项目名称随意。建立一个MDI表单FrmMain和一个Form1表单。然后新建一个铺...
  • hansonjan
  • hansonjan
  • 2009-11-10 19:42:00
  • 2804

C# 判断系统空闲(键盘、鼠标不操作一段时间)

// 创建结构体用于返回捕获时间           [StructLayout(LayoutKind.Sequential)]         struct LASTINPUTINFO    ...
  • JIA237046854
  • JIA237046854
  • 2015-06-08 15:26:39
  • 555

c# WinForm窗体实现动态时间展示

动态展示时间窗体组件Timer启动,单位1000毫秒Timer事件using System; using System.Collections.Generic; using System.Compon...
  • qq_36482772
  • qq_36482772
  • 2017-06-01 11:30:06
  • 1514

窗口界面编程之一:VB实现简单异形窗口

伴随电脑的普及,有不少人还是比较喜欢编写程序,虽然功能不见得有多好,但调试运行着自己写的程序都是非常开心的事。很标准的业余编程,呵呵! 很早以前看到的程序界面基本都长一个样,没有什么个性化,但现在的情...
  • SnowRen3074
  • SnowRen3074
  • 2013-10-29 11:08:59
  • 1385

Henry手记-VB.net WinForm中的FORM初探(一)

Henry手记-VB.net WinForm中的FORM初探(一)韩睿(2002.9.25) 经常有网友在我主持的版面上发贴子或写信直接来问我,为什么vb.net和vb6差了这么多。当然,问得最多的就...
  • Latitude
  • Latitude
  • 2002-09-25 22:09:00
  • 3174

.net WinForm 新窗体后台打开完美的解决

最近在做浏览器开发时,想要实现 IE 6那种多窗体,又允许后台打开而不抢占视野的方式。 WinForms 应用程序中想要后台打开一个新的窗体,而不(抢焦)、(遮挡)目前窗体。 需要注意的是,SW_...
  • binyao02123202
  • binyao02123202
  • 2012-01-19 16:17:44
  • 1236

winform如何用Timer实现将时间动态显示在窗体上?

1。拖拉一个Timer控件到窗体上,拖拉一个Lable控件到窗体上 2。在Timer控件属性设置为:Enabled设为True、Interval设为1000 3。Timer 控件的Tick事件双击进入...
  • dbagaoshou
  • dbagaoshou
  • 2015-12-03 16:38:34
  • 1435
收藏助手
不良信息举报
您举报文章:vb.net winform实现窗体空闲时间的检测
举报原因:
原因补充:

(最多只允许输入30个字)