HOW TO:监视系统的NumLock,CapsLock,ScrollLock,Insert状态
来源:互联网 发布:淘宝阿里旅行投诉电话 编辑:程序博客网 时间:2024/06/07 01:24
Author:水如烟
这个类要利用上面的鼠标键盘钩子类
StatusKeySateWatcher.EventArgs.vb 事件参数定义
Namespace uWindows
Partial Class StatusKeySateWatcher
Public Class EventArgs
Inherits System.EventArgs
Private gIsEnabled As Boolean
Private gMsgKey As MsgKeyEnum
Sub New(ByVal msgkey As MsgKeyEnum, ByVal isenabled As Boolean)
gMsgKey = msgkey
gIsEnabled = isenabled
End Sub
Public ReadOnly Property MsgKey() As MsgKeyEnum
Get
Return gMsgKey
End Get
End Property
Public ReadOnly Property IsEnabled() As Boolean
Get
Return gIsEnabled
End Get
End Property
End Class
Public Enum MsgKeyEnum
NumLock
CapsLock
ScrollLock
Insert
End Enum
End Class
End Namespace
Partial Class StatusKeySateWatcher
Public Class EventArgs
Inherits System.EventArgs
Private gIsEnabled As Boolean
Private gMsgKey As MsgKeyEnum
Sub New(ByVal msgkey As MsgKeyEnum, ByVal isenabled As Boolean)
gMsgKey = msgkey
gIsEnabled = isenabled
End Sub
Public ReadOnly Property MsgKey() As MsgKeyEnum
Get
Return gMsgKey
End Get
End Property
Public ReadOnly Property IsEnabled() As Boolean
Get
Return gIsEnabled
End Get
End Property
End Class
Public Enum MsgKeyEnum
NumLock
CapsLock
ScrollLock
Insert
End Enum
End Class
End Namespace
StatusKeySateWatcher.vb 功能键状态指示类
Namespace uWindows
Public Class StatusKeySateWatcher
Public Event TimeChanged(ByVal now As DateTime)
Public Event KeySateChanged(ByVal sender As Object, ByVal e As StatusKeySateWatcher.EventArgs)
Private WithEvents gKeyboardHook As New uWindows.MouseKeyboardHook
Private WithEvents gMainForm As Windows.Forms.Form
Private WithEvents gTimer As New System.Timers.Timer(1000)
Sub New(ByVal mainform As Windows.Forms.Form)
gMainForm = mainform
Initialize()
End Sub
Private Sub Initialize()
gKeyboardHook.Start(MouseKeyboardHook.HookWay.Keyboard)
gTimer.Start()
End Sub
'取各键现值
Private Sub GetOriginalState()
Dim sender As Object = Nothing
Dim mEventArgs As StatusKeySateWatcher.EventArgs = Nothing
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.NumLock, Not KeyIsEnabled(Windows.Forms.Keys.NumLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.CapsLock, Not KeyIsEnabled(Windows.Forms.Keys.CapsLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.ScrollLock, Not KeyIsEnabled(Windows.Forms.Keys.Scroll))
RaiseEvent KeySateChanged(sender, mEventArgs)
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.Insert, Not KeyIsEnabled(Windows.Forms.Keys.Insert))
RaiseEvent KeySateChanged(sender, mEventArgs)
End Sub
Protected Overrides Sub Finalize()
gKeyboardHook.Stop()
gTimer.Dispose()
MyBase.Finalize()
End Sub
Private Sub gMainForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles gMainForm.FormClosing
Me.Finalize()
End Sub
Private Sub gMainForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles gMainForm.Load
Me.GetOriginalState()
End Sub
Private Sub gKeyboardHook_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles gKeyboardHook.KeyDown
Dim mEventArgs As StatusKeySateWatcher.EventArgs = Nothing
Select Case e.KeyCode
Case Windows.Forms.Keys.NumLock
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.NumLock, KeyIsEnabled(Windows.Forms.Keys.NumLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
Case Windows.Forms.Keys.CapsLock
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.CapsLock, KeyIsEnabled(Windows.Forms.Keys.CapsLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
Case Windows.Forms.Keys.Scroll
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.ScrollLock, KeyIsEnabled(Windows.Forms.Keys.Scroll))
RaiseEvent KeySateChanged(sender, mEventArgs)
Case Windows.Forms.Keys.Insert
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.Insert, KeyIsEnabled(Windows.Forms.Keys.Insert))
RaiseEvent KeySateChanged(sender, mEventArgs)
End Select
End Sub
Private Function KeyIsEnabled(ByVal keycode As Windows.Forms.Keys) As Boolean
Return Not CType(SafeNativeMethods.GetKeyState(keycode), Boolean)
End Function
Private Sub mTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles gTimer.Elapsed
RaiseEvent TimeChanged(e.SignalTime)
End Sub
End Class
End Namespace
Public Class StatusKeySateWatcher
Public Event TimeChanged(ByVal now As DateTime)
Public Event KeySateChanged(ByVal sender As Object, ByVal e As StatusKeySateWatcher.EventArgs)
Private WithEvents gKeyboardHook As New uWindows.MouseKeyboardHook
Private WithEvents gMainForm As Windows.Forms.Form
Private WithEvents gTimer As New System.Timers.Timer(1000)
Sub New(ByVal mainform As Windows.Forms.Form)
gMainForm = mainform
Initialize()
End Sub
Private Sub Initialize()
gKeyboardHook.Start(MouseKeyboardHook.HookWay.Keyboard)
gTimer.Start()
End Sub
'取各键现值
Private Sub GetOriginalState()
Dim sender As Object = Nothing
Dim mEventArgs As StatusKeySateWatcher.EventArgs = Nothing
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.NumLock, Not KeyIsEnabled(Windows.Forms.Keys.NumLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.CapsLock, Not KeyIsEnabled(Windows.Forms.Keys.CapsLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.ScrollLock, Not KeyIsEnabled(Windows.Forms.Keys.Scroll))
RaiseEvent KeySateChanged(sender, mEventArgs)
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.Insert, Not KeyIsEnabled(Windows.Forms.Keys.Insert))
RaiseEvent KeySateChanged(sender, mEventArgs)
End Sub
Protected Overrides Sub Finalize()
gKeyboardHook.Stop()
gTimer.Dispose()
MyBase.Finalize()
End Sub
Private Sub gMainForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles gMainForm.FormClosing
Me.Finalize()
End Sub
Private Sub gMainForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles gMainForm.Load
Me.GetOriginalState()
End Sub
Private Sub gKeyboardHook_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles gKeyboardHook.KeyDown
Dim mEventArgs As StatusKeySateWatcher.EventArgs = Nothing
Select Case e.KeyCode
Case Windows.Forms.Keys.NumLock
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.NumLock, KeyIsEnabled(Windows.Forms.Keys.NumLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
Case Windows.Forms.Keys.CapsLock
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.CapsLock, KeyIsEnabled(Windows.Forms.Keys.CapsLock))
RaiseEvent KeySateChanged(sender, mEventArgs)
Case Windows.Forms.Keys.Scroll
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.ScrollLock, KeyIsEnabled(Windows.Forms.Keys.Scroll))
RaiseEvent KeySateChanged(sender, mEventArgs)
Case Windows.Forms.Keys.Insert
mEventArgs = New StatusKeySateWatcher.EventArgs(MsgKeyEnum.Insert, KeyIsEnabled(Windows.Forms.Keys.Insert))
RaiseEvent KeySateChanged(sender, mEventArgs)
End Select
End Sub
Private Function KeyIsEnabled(ByVal keycode As Windows.Forms.Keys) As Boolean
Return Not CType(SafeNativeMethods.GetKeyState(keycode), Boolean)
End Function
Private Sub mTimer_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles gTimer.Elapsed
RaiseEvent TimeChanged(e.SignalTime)
End Sub
End Class
End Namespace
使用:
Public Class MainForm
Private WithEvents gKeyState As New LzmTW.uWindows.StatusKeySateWatcher(Me)
Private Sub gKeyState_KeySateChanged(ByVal sender As Object, ByVal e As LzmTW.uWindows.StatusKeySateWatcher.EventArgs) Handles gKeyState.KeySateChanged
Select Case e.MsgKey
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.NumLock
Me.NumLockToolStripStatusLabel.Enabled = e.IsEnabled
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.CapsLock
Me.CapsLockToolStripStatusLabel.Enabled = e.IsEnabled
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.ScrollLock
Me.ScrollLockToolStripStatusLabel.Enabled = e.IsEnabled
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.Insert
Me.InsertToolStripStatusLabel.Enabled = e.IsEnabled
End Select
End Sub
Private Sub gKeyState_TimeChanged(ByVal now As Date) Handles gKeyState.TimeChanged
Me.TimeToolStripStatusLabel.Text = now.ToString
End Sub
End Class
Private WithEvents gKeyState As New LzmTW.uWindows.StatusKeySateWatcher(Me)
Private Sub gKeyState_KeySateChanged(ByVal sender As Object, ByVal e As LzmTW.uWindows.StatusKeySateWatcher.EventArgs) Handles gKeyState.KeySateChanged
Select Case e.MsgKey
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.NumLock
Me.NumLockToolStripStatusLabel.Enabled = e.IsEnabled
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.CapsLock
Me.CapsLockToolStripStatusLabel.Enabled = e.IsEnabled
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.ScrollLock
Me.ScrollLockToolStripStatusLabel.Enabled = e.IsEnabled
Case LzmTW.uWindows.StatusKeySateWatcher.MsgKeyEnum.Insert
Me.InsertToolStripStatusLabel.Enabled = e.IsEnabled
End Select
End Sub
Private Sub gKeyState_TimeChanged(ByVal now As Date) Handles gKeyState.TimeChanged
Me.TimeToolStripStatusLabel.Text = now.ToString
End Sub
End Class
- HOW TO:监视系统的NumLock,CapsLock,ScrollLock,Insert状态
- .net2.0轻松判断NumLock、CapsLock、ScrollLock、Insert键的状态
- Vbscript SendKeys and Get NumLock ,CapsLock, ScrollLock Key Status
- 在VB.NET环境下如何判断INsert,NumLock等键盘的状态。
- 监视系统状态
- JQuery判断Capslock状态
- 更改NumLock键状态
- Android monkey监视系统状态
- UIAlertView的状态监视
- 【转】Freebsd中监视系统性能状态的工具:systat
- HOW TO:监视Window空闲时间
- 保持numlock处于开启状态
- 保持numlock处于开启状态
- java监视系统内存状态小程序
- Ubuntu中基于QT的系统网线连接状态的实时监视
- 监视Oracle系统状态以及查询死锁的用例语句!
- 获取小键盘numlock 当前状态信息
- 用 C# 监视剪贴板的活动状态
- 俞敏洪:和青年学生分享改变一生的5句话
- PHPUnit袖珍指南 第十一章 残根
- [open source]通过汉字得到拼音的函数库(getpinyin)发布
- HOW TO:建立键盘鼠标钩子
- 创业文章:长风破浪会有时
- HOW TO:监视系统的NumLock,CapsLock,ScrollLock,Insert状态
- 完全搞定pagefile.pif(ExERoute木马)病毒
- Time flowing...
- 文件空间变大的一个特例
- 余弦定理和新闻的分类
- 用VC++5.0制作DLL经验一二
- asp.net gridview 格式化字符串问题
- VC++动态链接库(DLL)编程深入浅出(一)
- 找回自己,挑战自我,遨游海洋。