无论是用GETCURSORPOS还是用GETCURSORPOS+SCREENTOCLIENT,得到的值每隔一端时间就会发生变化。

解决方案 »

  1.   

    GETCURSORPOS是获取当前鼠标的位置,你在这所谓的每隔一段时间之中,鼠标难道是不动的吗动了的话,当然会发生变化了。
      

  2.   

    代码:
    dim attrib as long
    dim s as pointapi
    attrib=findwindow(vbnullstring,"窗口名称")
    if attrib<>0 then
    getcursorpos s
    debug.print s.x & ":" & s.y
    endif
    即使鼠标动了,数值也不会变化太大。差不多在同一条直线上,s.y的值竟然相差2、30,不可想象吧。
    对了,我所面对的窗口不是控件窗口,有可能是direct的游戏窗口。
      

  3.   

    getcursorpos 和你的findwindow找出的窗口一点关系都没有。算了,你新建一标准EXE,窗体上加一定时器,间隔500ms.在窗体中加入如下代码:
    Private Type POINTAPI
        x As Long
        y As Long
    End TypePrivate Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As LongPrivate Sub Timer1_Timer()
    Dim a As POINTAPI
        GetCursorPos a
        Debug.Print a.x, a.y
    End Sub你看看立即窗口出来的有没有变。
      

  4.   

    【函数】
    GetCursorPos【操作系统】
    Win9X:Yes
    WinNT:Yes【声明】
    GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long【说明】  获取鼠标指针的当前位置 【返回值】  Long,非零表示成功,零表示失败。会设置GetLastError 【其它】
    【参数表】
      lpPoint --------  POINTAPI,随同指针在屏幕像素坐标中的位置载入的一个结构
      

  5.   

    to  LGYAN(紫衣随想):
    我按照你说的重做了一次,仍然在变。
      

  6.   

    getcursorpos 是获取鼠标指针的当前位置如果鼠标不动,是不可能会改变的。鼠标动的话,那么很你那些数据就是合理的了。因为你那个误差是像素的。鼠标动一点就会误差风个了。
      

  7.   

    to  LGYAN(紫衣随想):
    我没有QQ,我的EMAIL是[email protected]
    不应该是象素的问题,因为在得到第二、三次数据时,我又获得了相对于第一次数据的坐标值,这时鼠标在屏幕上位置与第一次相差很大(有参照物),我也很奇怪。上火呀,我所做的东西大部分都完成了,就差这部分了
      

  8.   

    楼主可以另外搞个工程,能够显示你的这个问题的代码,发给我,我帮你解决吧
    [email protected]
    早上给你发信,不知怎么搞的没有了。
      

  9.   

    tp LGYAN(紫衣随想):
    我给你发了EMAIL,不应该是代码的问题,是不是该窗口的问题?