Private Sub msgrid1_OLEDragDrop(Data As MSFlexGridLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single) 'shift 整数,当按下 SHIFT、CTRL 和 ALT 键时,与这些键状态相对应。 SHIFT 键为位 0, 'CTRL 键为位 1,ALT 键为位 2。这些位相应的值分别为 1,2 和 4, 'shift 参数代表了这些键的状态。可设置三个位中的部分、全部或根本不设置, '相应地表明部分、全部按键被按下或没有按键按下。 '例如,同时按下 CTRL 和 ALT 键,shift 值为 6。CTRL End Sub
已经找到答案,是调用API函数GetKeyboardState获取当前键盘状态 Public Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As LongDim keystate(0 To 255) As Byte GetKeyboardState keystate(0) If keystate(vbKeyControl) >= 128 Then 'Ctrl键按下 Else 'Ctrl键没有按下 End If
'shift 整数,当按下 SHIFT、CTRL 和 ALT 键时,与这些键状态相对应。 SHIFT 键为位 0,
'CTRL 键为位 1,ALT 键为位 2。这些位相应的值分别为 1,2 和 4,
'shift 参数代表了这些键的状态。可设置三个位中的部分、全部或根本不设置,
'相应地表明部分、全部按键被按下或没有按键按下。
'例如,同时按下 CTRL 和 ALT 键,shift 值为 6。CTRL
End Sub
Public Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As LongDim keystate(0 To 255) As Byte
GetKeyboardState keystate(0)
If keystate(vbKeyControl) >= 128 Then
'Ctrl键按下
Else
'Ctrl键没有按下
End If