游戏窗口的鼠标坐标和实际的坐标不一致,怎么换算?

来源:百度知道 编辑:UC知道 时间:2024/06/21 03:26:27
最近玩的一个游戏,在游戏中截取的鼠标坐标,在按键精灵中竟然是错误的,相差很远,不知道有没有什么办法可以把游戏的坐标换算成按键精灵可以识别的鼠标坐标呢?
补充一下,也许是没看清楚我的意思.
游戏中的鼠标位置,并非是系统本身鼠标的位置,游戏大小为800*600,游戏中鼠标的位置如果在主角身上,可系统本身的鼠标位置有可能是在左上角,也有可能在右上角,也有可能和游戏的鼠标想吻合.

这个有很多种写法
写法一

1 先将鼠标指向游戏窗口获取游戏窗口句柄
Hwnd = Plugin.Window.MousePoint()

2建立一个动态数组
dim MyArray

3通过获取到的句柄Hwnd得到游戏窗口大小

sRect = Plugin.Window.GetClientRect(Hwnd)

4通过数组分割函数将得到的坐标分割为两组
MyArray = Split(sRect, "|")

5,通过类型转换函数将得的坐标转换为LNG并赋值
Ux = Clng(MyArray(0))
Uy= Clng(MyArray(1))

假如普通抓点坐标为100,100 则游戏内坐标为 100-Ux 100-Uy

完整代码
Hwnd = Plugin.Window.MousePoint()

sRect = Plugin.Window.GetClientRect(Hwnd)

dim MyArray
MyArray = Split(sRect, "|")

Ux = Clng(MyArray(0))
Uy= Clng(MyArray(1))

写法二

利用ScreenToClient(hwnd,x,y) 函数,转换实际坐标和窗口坐标
首先
1 先将鼠标指向游戏窗口获取游戏窗口句柄
Hwnd = Plugin.Window.MousePoint()
2将原来抓点的值代入ScreenToClient(hwnd,x,y) 函数则可以得到窗口坐标

示例:
x = 100:y = 100
dm_ret = dm.ScreenToClient(hwnd,x,y)
这里利用了大漠插件的功能,实际上按键自带的VB函数就可以完成。

还有其它许多写法,对于新手来说