VB 怎么判断是否同时按了2个方向键呢

来源:百度知道 编辑:UC知道 时间:2024/05/16 10:19:32
按1个我会写,If KeyCode = 38 Then
但是按2个呢 If KeyCode = 38 and kecode = 39 Then 好象不对呀,没反映

使用这个API函数,判断键盘虚拟键的状态的,按下为1,否则为0,声明如下(在窗体中声明是Private开头,在模块中声明则用Public):
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

用法如下:

Public Const VK_F1=&H70 '声明键盘码常量
Public Const VK_F2=&H71

If GetAsyncKeyState(VK_F1)<>0 And GetAsyncKeyState(VK_F2)<>0 Then
....
想知道多一些VK_XXX键盘码,用VB自带的API函数浏览器查询以VK开头的常量就可以了,一大堆让你看。另,字母键的VK码等于其Ascii码,不过要注意转为十六进制(&H开头的)数,转换方法书里有说的,去看看。

我也想知道,如果按2个键就某事件就响应应该是什么?
好想知道啊

我只知道用keydown事件。
Private Sub Form_KeyDown(keycode As Integer, shift As Integer)

Private Sub object_KeyDown([index As Integer,]keycode As Integer, shift As Integer)

这里面的keycode指的就是键比如f1键就是vbkeyf1等等。
后面那个shift是一个整数:在事件发生时与 SHIFT、CTRL 和 ALT 键的状态相对应。shift 参数是一个位域,其最低有效的位分别对应于 SHIFT 键(位 0)、CTRL 键(位 1)和 ALT 键(位 2)。这些位分别与值 1、2 和 4 对应。可以设置这些位中的一部分、全部或者都不设置,也就是按下一部分或全部键,或者没有按下任何键。例如,如果同时按下 CTRL 键和 ALT 键,则 shift