怎样在ActiveX 控件的DragDrop事件中获得键盘控制键的按下状态

解决方案 »

  1.   

    你可以用ActiveX 控件的OLEDragDrop 事件试试呀,这样直接判断shift参数的值就可以了
      

  2.   

    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
      

  3.   

    已经找到答案,是调用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