通过这一段代码要设置F8为快捷键,他是如何设置成功的?VB小白 不明白为啥

keyResult = GetAsyncKeyState(119)
If keyResult = -32767 Then

If Me.Visible = False Then
Me.Visible = True
Me.SetFocus
Else
Me.Hide
End If

End If

GetAsyncKeyState这个API函数是用来检测某个键的状态的,119是F8这个键的虚拟键码,因此GetAsyncKeyState(119)就是检测F8键的当前状态的意思。

这个函数的返回值中如果位15为1,表示该键目前处于按下状态;如果位0为1,则表示在上次调用GetAsyncKeyState函数后该键曾经被按过。

如果你不太明白什么叫“位”,下面我就简单说说:
一个整数的位15为1,用二进制表示就是 1000000000000000 ,16进制为&H8000,十进制为-32768;
而位0为1,就是 0000000000000001,也就是1,这个简单;
两者加起来就是 -32767 了。
不过用 If keyResult = -32767 Then 来判断键是否按下是不严谨的,应该这样:

If keyResult <> 0 Then
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-11
GetAsyncKeyState,是一个函数,用来判断函数调用时指定虚拟键的状态。
119是[F8]
keyResult = GetAsyncKeyState(119) ‘按下F8键

If keyResult = -32767 Then '键盘按下状态

下面的判断

上面判断有没有按F8,有就执行下面的了啊。追问

SetFocus 设置的焦点是F8吗?

追答

Me.SetFocus ‘是把焦点设置为窗体本身,不是F8

本回答被提问者采纳
相似回答