[VB.NET]调用API获取/设置键盘按键状态
2015-12-04 12:59
597 查看
1.调用GetAsyncKeyState()获取指定按键的状态,GetActiveKey()检索指定范围内的按键状态
2.调用keybd_event()可合成一次击键事件,通常两次击键事件间需要设定时间间隔
3.调用MapVirtualKey()获取指定按键的硬件扫描码,传入keybd_event()第二个参数就可以对DirectInput有效。
2.调用keybd_event()可合成一次击键事件,通常两次击键事件间需要设定时间间隔
3.调用MapVirtualKey()获取指定按键的硬件扫描码,传入keybd_event()第二个参数就可以对DirectInput有效。
Public Class ImitateKeyClass Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Integer, ByVal wMapType As Integer) As Integer Private Declare Function GetAsyncKeyState Lib "user32 " (ByVal vKey As Integer) As Integer ''' <summary> ''' 发送按键 ''' </summary> ''' <param name="CharArray"></param> Public Sub SendString(CharArray As String) For Each SubChar As Char In CharArray keybd_event(Asc(SubChar), MapVirtualKey(Asc(SubChar), 0), &H1 Or 0, 0) '按下 System.Threading.Thread.Sleep(10) '延时 keybd_event(Asc(SubChar), MapVirtualKey(Asc(SubChar), 0), &H1 Or &H2, 0) '弹起 System.Threading.Thread.Sleep(10) Next End Sub ''' <summary> ''' 获取A~Z的按键状态 ''' </summary> ''' <returns></returns> Public Function GetActiveKey() As Byte For i = 65 To 90 'A~Z的ASICC码 If CurrentKeyState(i) = True Then Return i Next Return 0 End Function ''' <summary> ''' 获取键盘按键状态 ''' </summary> ''' <param name="KeyCode"></param> ''' <returns></returns> Private Function CurrentKeyState(ByVal KeyCode As Byte) As Boolean Dim temp As Integer = GetAsyncKeyState(KeyCode) Return (IIf(temp = -32767, True, False)) End Function End Class
相关文章推荐
- excel如何调用VBA代码
- 二进制转八进制vb6程序
- 二进制转十六进制vb6程序
- vb6判断动态字节数组是否已经初始化的最简单的办法
- OpenGL ES 学习教程(五) 极速绘制,使用 VBO (顶点缓冲区对象)!
- 导航条(Navbar)
- 防止已启动的VBScript文件重复启动
- 从VBA转到VSTO经历及感受
- Windows与VBox虚拟机共享目录的方法
- Visual Basic 2012 借助DataGridView控件将SQL server2012 数据导入到Excel 2010
- vbs发送请求
- C#/VB.NET 向PowerPoint文档插入视频
- vbs函数大全
- VBS自学(四)
- C#/VB.NET 向PowerPoint文档插入视频
- vb脚本自动更新版本信息
- VB的计划任务的问题
- vbox共享文件 挂载
- vb.net 写入文件同步锁
- Visual Basic 2012 借助DataGridView控件将Excel 2010数据导入到SQL server 2012