大家好,先给大家拜年啦! 有个问题问下高手:    就是在用POSTMESSAGE模拟鼠标的时候,老是出现坐标为负,我把源码贴出来,希望高手帮我看看错在那了
 我要实现的功能是 点击FORM1的按扭,然后鼠标后台模拟点击FORM2的某一点,不是按扭 是窗体上的某一坐标
 
 POSTMESSAGE,都已经声明好了  FORM1:
   Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202
Private Const VK_CONTROL = &H11
Private Const VK_SHIFT = &H10
Private Const VK_RETURN = &HD
Private Const VK_1 = &H31
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101Private Sub Command1_Click()
Form2.Show
End SubPrivate Sub Command2_Click()
Dim hwnd As Longhwnd = Form2.hwnd
Dim lp As Long
lp = 58 'Y坐标
lp = lp * 65536 + 32 '32=X坐标postmessage hwnd, WM_LBUTTONDOWN, MK_LBUTTON, lp
postmessage hwnd, WM_LBUTTONUP, MK_LBUTTON, lpform2Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
MsgBox "x=" & X & "y=" & Y
End Sub可是点击COMMAND2的时候弹出 X=-45540 Y=285 不管把X,Y坐标(LP的值)改成任何值 都弹出这两个值 到底那里错了 请高手帮忙指点

解决方案 »

  1.   

    MsgBox "x=" & X / 15 & "y=" & Y / 15
      

  2.   

    form2的scalemode改成pixel也管用
    Option ExplicitPrivate Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long      Private Const WM_LBUTTONDOWN = &H201
    Private Const WM_LBUTTONUP = &H202
    Private Const VK_CONTROL = &H11
    Private Const VK_SHIFT = &H10
    Private Const VK_RETURN = &HD
    Private Const VK_1 = &H31
    Private Const WM_KEYDOWN = &H100
    Private Const WM_KEYUP = &H101
    Private Const MK_LBUTTON = &H1Private Sub Command1_Click()
    Form2.Show
    End Sub
    Private Sub Command2_Click()
        Dim hwnd     As Long
        
        hwnd = Form2.hwnd
        
        
        Dim lp     As Long
        lp = 300       'Y坐标
        lp = lp * 65536 + 20               '500=X坐标
        
        PostMessage hwnd, WM_LBUTTONDOWN, MK_LBUTTON, lp
        PostMessage hwnd, WM_LBUTTONUP, MK_LBUTTON, lpEnd Sub