zhangyamin05 发表于 2009-9-18 14:19:47

robot 如何获得鼠标滚轮事件

我是初学者,刚刚用robot随便随便测试了一个现实3d数据的软件,发现鼠标滚轮事件无法被录制(那个软件用鼠标滚轮放大、缩小数据)。在网上查了下。据说可以自己编写一个方法来实现这个功能。我就有一些问题。
1、我查到这个网站有个帖子,网址如下。
http://bbs.51testing.com/thread-6016-1-1.html
那里边的方法我不知道怎么+到脚本中才能让脚本正确的捕获鼠标滚轮事件?
2、我有一个Win32_API.sbh文件,怎么用??
3、robot的验证点中的Region Image和windows Image总是在回放的时候比录制的时候少一个边线(或者是多一个边线,记不清了),怎么解决?而且有的时候回放的比录制的慢半拍儿?

zhangyamin05 发表于 2009-9-21 09:09:07

回复 1# 的帖子

过了一个周末,还是没人。自己顶

村上舞!舞!舞 发表于 2009-9-22 11:04:29

楼主,你给的那个地址中已经将例子写的很清楚了.
ConstGWL_WNDPROC=(-4)
ConstWM_COMMAND=&H111
ConstWM_MBUTTONDOWN=&H207
ConstWM_MBUTTONUP=&H208
ConstWM_MOUSEWHEEL=&H20A

dim OldwinprocAsLong

DeclareFunctionSetWindowLongLib"user32"Alias"SetWindowLongA"(ByValhWndAsLong,_
ByValnIndexAsLong,ByValdwNewLongAsLong)AsLong
DeclareFunctionCallWindowProcLib"user32"Alias"CallWindowProcA"(ByVallpPrevWndFuncAsLong,_
ByValhWndAsLong,ByValMsgAsLong,ByValwParamAsLong,ByVallParamAsLong)AsLong
DeclareFunctionGetWindowLongLib"user32"Alias"GetWindowLongA"(ByValhWndAsLong,_
ByValnIndexAsLong)AsLong
FunctionFlexScroll(ByValhWndAsLong,ByValwMsgAsLong,ByValwParamAsLong,ByVallParamAsLong)AsLong
'支持滚轮的滚动Yu2004-5-1015:33
               SelectCasewMsg
                               CaseWM_MOUSEWHEEL
                                       SelectCasewParam
                                                   Case-7864320    '向下滚
                                                               SendKeys"{PGDN}"
                                                   Case7864320      '向上滚
                                                               SendKeys"{PGUP}"
                                       EndSelect      
               EndSelect
               FlexScroll=CallWindowProc(Oldwinproc,hWnd,wMsg,wParam,lParam)
EndFunction

以下给你的参考意见:
注意看下定义常量部份与声明的外部WINDOWS的API库文件user32 ,然后是声明库文件中的相关WINDOWS底层API函数。比如SetWindowLong函数。
如果你有了Win32_API.sbh文件的话,你的DeclareFunctionSetWindowLongLib……外部库文件声明代码即可不用在脚本中进行声明。而可以在脚本头一行用'$include 将Win32_API.sbh库声明文件包含进来。你的Win32_API.sbh文件实际上是Windows的底层API库声明文件。其中已经包含了必要的外部文件API的所有声明。这几句话请楼主好好去理解下。然后仔细的看下你的Win32_API.sbh文件的具体内容,搞清楚在robot中sbh和sbl两种库文件的关系。这种实现方法最终都是通过WINDOWS底层API提供的接口(库声明文件中声明的)以调用底层API来实现的。
至于你的图片验证点。你可以验证一个较小范围。不容易改变的区域。或者通过验证点中的蒙板工具将不确定的部份模糊验证。

zhangyamin05 发表于 2009-9-25 15:53:28

回复 3# 的帖子

非常感谢你的回复,我会仔细的研究下。再次感谢。
页: [1]
查看完整版本: robot 如何获得鼠标滚轮事件