赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 2 |
经验 | 7397 |
最后登录 | 2024-10-7 |
在线时间 | 230 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 200
- 在线时间
- 230 小时
- 注册时间
- 2008-7-8
- 帖子
- 233
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 hcm 于 2013-1-14 12:54 编辑
{:2_253:}
本意是想让鼠标和键盘同时响应按钮,
实践的时候发现鼠标和键盘要同时设置要考虑很多问题,比如优先级之类的问题。
后来觉得如果能直接设定鼠标坐标就可以不用在意这种细节~☆
自己查了查API之后试着用了下SetCursorPos,发现这种函数设定的是屏幕坐标,这么一来除非是全屏状态,否则坐标肯定会偏移的。
然后自己睡前想了想做了个奇怪的方法↓- def self.set_mouse_pos(game_x, game_y)
- $SetCursorPos.call(0, 0)
- desktop_x,desktop_dy = $GetSystemMetrics
- mouse_x, mouse_y = Mouse.get_mouse_pos
- x = 0
- y = 0
- while mouse_y < game_y
- y = y + 1
- $SetCursorPos.call(0, y)
- mouse_x, mouse_y = Mouse.get_mouse_pos
- end
- while mouse_x < game_x
- x = x + 1
- $SetCursorPos.call(x, y)
- mouse_x, mouse_y = Mouse.get_mouse_pos
- end
- end
复制代码 【>。<文科生不要在意冗杂的语句。总之就是这样循环到游戏中的位置为止
说了这么多其实就是想问问有米有更好的方法~
补充:
好吧我太笨了,
表示今天早上翻鼠标脚本的时候无意间翻到ScreenToClient,
想是不是还有ClientToScreen?
百度了一下果然有,
然后自己仿照ScreenToClient做了一下,
居然成功了!
def self.set_mouse_pos(game_x, game_y)
point = [game_x, game_y].pack('ll')
$ClientToScreen.call($Window_HWND, point)
desktop_x, desktop_y = point.unpack('ll')
$SetCursorPos.call(desktop_x, desktop_y)
end
就当我是卖萌好了…… |
|