happytc 发表于 2011-6-25 21:00:00

[求思路]滚动某个程序的窗口

因为想写au3的滚动截屏。

当处于某个窗口(如Firefox的窗口),如何让窗口的垂直滚动条向下滚动?---- 现在仅仅想到发送键盘按键。而关键一点就是如何判断已经滚动最底部了?

hzxymkb 发表于 2011-6-25 21:08:55

经滚动最底部就会自己停止了,不会再下了

happytc 发表于 2011-6-25 21:11:41

经滚动最底部就会自己停止了,不会再下了
hzxymkb 发表于 2011-6-25 21:08 http://www.autoitx.com/images/common/back.gif


    老大,关键是在脚本里怎么得知这个“停止”,还有点就是,如果就用发送按键让某程序窗口向下滚动,怎么知道一次向下滚动了多少像素呢?

hzxymkb 发表于 2011-6-25 21:14:28

不停的发送咯,到了底部还会继续发送的,不用管他不是行了!
反正已经到了底部了

happytc 发表于 2011-6-25 21:20:49

不停的发送咯,到了底部还会继续发送的,不用管他不是行了!
反正已经到了底部了
hzxymkb 发表于 2011-6-25 21:14 http://www.autoitx.com/images/common/back.gif

呵呵,这样可不行,若A窗口只需要滚动一会就到底部了(如只按两次 ↓ ),而B窗口需要按1000千次才到底部,怎么区别呢?

chenronting 发表于 2011-6-25 21:21:42

相对窗口的位置是不变的。可以取色。很烂的主意。。
如果只是网页到最底下,可以发送 END键!

pcbar 发表于 2011-6-25 21:23:26

按键盘上的end键?

hzxymkb 发表于 2011-6-25 21:26:18

楼上两位正解!

happytc 发表于 2011-6-25 21:27:13

相对窗口的位置是不变的。可以取色。很烂的主意。。
如果只是网页到最底下,可以发送 END键!
chenronting 发表于 2011-6-25 21:21 http://www.autoitx.com/images/common/back.gif


    发送End肯定不行,我需要把滚动部分的截下来,再把这些部分截屏合并起来,太快,会截不到的

hzxymkb 发表于 2011-6-25 21:32:26

360浏览器有这个功能!

happytc 发表于 2011-6-25 21:33:17

刚才试了下,就是发送按键 ↓ ,若两次发送之间sleep时间短了,就会丢失一些行的截屏。更别说发送End键了

chenronting 发表于 2011-6-25 22:01:13

回复 9# happytc


    那就需要让机器跟我们人一样的去识别颜色了!

happytc 发表于 2011-6-25 22:10:33

回复 12# chenronting

应该不是这种机制的
看了下FSCapture,Picpick截图软件的滚屏功能

它们好象都可以判断滚动条到底部了,并且怎么去识别颜色呀,不同的软件滚动条颜色有可能不一样,这样失误率太高了。

happytc 发表于 2011-6-25 22:32:34

明白了,可以通过捕捉WM_HSCROLL ,WM_VSCROLL 事件,然后通过回调函数WindowProc()来得到消息,还用wParam值是否是SB_BOTTOM来判断是否到达底部

chenronting 发表于 2011-6-25 23:43:07

回复 13# happytc


    我不会!很无奈!
页: [1] 2
查看完整版本: [求思路]滚动某个程序的窗口