在定义API函数时,使用byref定义就行。

解决方案 »

  1.   

    Private Type tagMOUSEMOVEPOINT
        x As Long
        y As Long
        time As Long
        dwExtraInfo As Long
    End TypePrivate Declare Function GetMouseMovePoints Lib "user32" Alias "GetMouseMovePointsEx" (ByVal cbSize As Long, ByRef lppt As Long, ByRef lpptBuf As Long, ByVal nBufPoints As Long, ByVal resolution As Long) As Long
    Private Sub Command1_Click()
        Dim p1 As tagMOUSEMOVEPOINT
        Dim p2 As tagMOUSEMOVEPOINT
        Dim ret As Long
        
        ret = GetMouseMovePoints(Len(p1), VarPtr(p1), VarPtr(p2), Len(p2), 1)
        
        MsgBox p1.x & "    " & p1.y
        MsgBox p2.x & "    " & p2.y
        
    End Sub
      

  2.   

    Private Type tagMOUSEMOVEPOINT
        x As Long
        y As Long
        time As Long
        dwExtraInfo As Long
    End TypePrivate Declare Function GetMouseMovePoints Lib "user32" Alias "GetMouseMovePointsEx" (ByVal cbSize As Long, ByRef lppt As tagMOUSEMOVEPOINT, ByRef lpptBuf As tagMOUSEMOVEPOINT, ByVal nBufPoints As Long, ByVal resolution As Long) As Long
    Private Sub Command1_Click()
        Dim p1 As tagMOUSEMOVEPOINT
        Dim p2() As tagMOUSEMOVEPOINT
        Dim ret As Long,lPoints As Long
        lPoints = 3
        Redim p2(1 To lPoints) As tagMOUSEMOVEPOINT
        ret = GetMouseMovePoints(LenB(p1), p1, p2(1), lPoints , 1)
        
        MsgBox p1.x & "    " & p1.y
        MsgBox p2(1).x & "    " & p2(1).y
        
    End Sub