为了顺应当前形势和更好的发展,黑基网已于9月19日正式更名为【安基网】,域名更换为www.safebase.cn,请卸载旧的APP并安装新的APP,给您带来不便,敬请理解!谢谢

黑基Web安全攻防班
安基网 首页 IT技术 安全攻防 查看内容

vb利用api实现监控键盘

2009-5-9 11:10| 投稿: security

摘要: 以下为Form1.frm代码 VERSION 5.00Begin VB.Form Form1    Caption    &n...
以下为Form1.frm代码 VERSION 5.00Begin VB.Form Form1    Caption         =   "vb利用api实现监控键盘 ^_^ -- *^_^*"   ClientHeight    =   3195   ClientLeft      =   60   ClientTop       =   345   ClientWidth     =   4680   LinkTopic       =   "Form1"   ScaleHeight     =   3195   ScaleWidth      =   4680   StartUpPosition =   1  '所有者中心   Visible         =   0   'FalseEndAttribute VB_Name = "Form1"Attribute VB_GlobalNameSpace = FalseAttribute VB_Creatable = FalseAttribute VB_PredeclaredId = TrueAttribute VB_Exposed = False Private Sub Form_Load()    MsgBox "按下F12键,窗体就会显示"    SetTimer Me.hwnd, 0, 500, AddressOf TimerProc '每0.001秒调用一次TimerProcEnd Sub Private Sub Form_Unload(Cancel As Integer)    KillTimer Me.hwnd, 0    '退出时杀掉回调处理函数,防错End Sub   Module1.bas代码   Attribute VB_Name = "Module1" '回调处理函数Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long'杀掉Timer回调处理函数Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As LongDeclare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer'GetAsyncKeyState''VB声明'Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer'说明'判断函数调用时指定虚拟键的状态'返回值'Long,自对GetAsyncKeyState函数的上一次调用以来,如键已被按过,则位0设为1;否则设为0。如键目前处于按下状态,则位15设为1;如抬起,则为0。微软的win32手册指出:倘若输入焦点从属于与调用函数的输入线程不同的另一个输入线程,则返回值为0(例如,一旦另一个程序拥有焦点,则它应返回零)。证据显示,函数实际是在整个系统的范围内工作的'参数表'参数 类型及说明'vKey Long,欲测试的虚拟键的键码'注解'如指定了VK_LBUTTON 或 VK_RBUTTON,按钮的状态就会根据实际的按钮报告——无论是否曾用SwapMouseButton函数对鼠标的位置进行了交换。win32提供了额外的一些虚拟键码,比如VK_LSHIFT 和 VK_RSHIFT,以便在两个完全一样的键中区分出左右(也包括Ctrl 和 Alt)'Global i&, s$ '全局变量 Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)    s = 129                                         '设置一个初始值让它不在0到128之内    For i = 0 To 128                                'for找到键盘输入值       If GetAsyncKeyState(i) <> 0 And i = 123 Then 'GetAsyncKeyState这个api上面有说明,F12的ascii码是123            If i <> s Then                          '减少设置次数,因为每0.5秒就要调用一次些函数                s = i                               '同上原理                Form1.Visible = True                '设置窗体可见                KillTimer Form1.hwnd, 0             '杀掉Timer回调处理函数            End If            Exit For                                '退出for       End If    Next iEnd Sub       我希望大家不紧要把笔记这个平台当做"做笔记"的地方,同时也要当做一个学习的平台,大家相互学习。

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册黑基账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!



免责声明:本文由投稿者转载自互联网,版权归原作者所有,文中所述不代表本站观点,若有侵权或转载等不当之处请联系我们处理,让我们一起为维护良好的互联网秩序而努力!联系方式见网站首页右下角。


鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

最新

返回顶部