再度发帖求问,请看看

IT保安 IT保安 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
.if		ax == IDC_CAPTURE  ;初始状态捕获窗口左上坐标		
invoke FindWindow,NULL,offset szGameTitle
mov hGame,eax
invoke GetWindowRect,hGame,addr @rect
invoke SetDlgItemInt,hWnd,IDC_POXEDIT,@rect.left,FALSE
invoke SetDlgItemInt,hWnd,IDC_POYEDIT,@rect.top,FALSE
.elseif ax == IDC_STGAME ;按开始键后,鼠标移动到指定位置,即游戏窗口的开始游戏
;invoke Sleep,1000
invoke SetCursorPos,@rect.left+654,@rect.top+574

当执行到invoke SetCursorPos,@rect.left+654,@rect.top+574 这里,错误出现了,鼠标基本上就是乱飞了!
我仔细看了一下rect结构和setcursorpos函数,rect结构是long型的,setcursorpos要求的参数是int型的,我想是因为参数不匹配而导致的这一结果吧,我将setcursorpos的参数改成常量,那么就是正常的鼠标移动了!
我比较纳闷啊,书上是这么说的:win32环境中的参数实际上只有一种类型,那就是dword。那么为什么还会这样呢?
并且我看别人在VC上面做的,也是用rect结构和setcursorpos函数,都不经过强制转换就可以了!
那么在汇编里面,对于这种状况,该如何处理呢?用常量可不行啊!
...全文
评论 5
收藏 已收藏
分享
返回顶部
IT保安
汇编语言 21,500 成员 41,619 内容