手机百度app扫码登录:vb问题.高手来帮帮我啊!

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/06 07:38:26
GetAsyncKeyState听说这个api函数是判断函数调用时指定虚拟键的状态

什么是虚拟键.能不能告诉我实际一点的.api帮助里面的太抽象了.看不懂

请不要抄袭api帮助里面的内容.那个我也会看.

小弟才接触api.还请高手们多给我上点课.呵呵

GetAsyncKeyState

VB声明
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (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)

例子
Option Explicit
'在Form1上放两个command,一个textbox(text1.scrollbars设为3,MultiLine设为True)
'

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private blnExit As Boolean

Private Sub Form_Load()
Command1.Caption = "开始"
Command2.Caption = "停止"
blnExit = True
End Sub

Private Sub Form_Unload(Cancel As Integer)
If Not blnExit Then
Cancel = 1
MsgBox "请先停止记录键盘事件!", vbExclamation, "提示"
End If
End Sub

Private Sub Command1_Click()
Dim i As Integer

On Error Resume Next

For i = 1 To 256
GetAsyncKeyState i
Next i

blnExit = False

Do While Not blnExit
For i = &H1 To &H100
If (GetAsyncKeyState(i) And &H7FFF) <> 0 Then
Text1.Text = Text1.Text & i
End If
Next i
DoEvents
Loop
End Sub

Private Sub Command2_Click()
blnExit = True
End Sub