找回密码
 加入
搜索
查看: 1762|回复: 9

帮帮忙:如何获取用户在浏览器里点击了哪一个链接?

[复制链接]
发表于 2009-7-3 21:36:24 | 显示全部楼层 |阅读模式
本帖最后由 tisiem 于 2009-7-24 16:17 编辑

我目前的情况是这样的:
一个论坛有很多的垃圾贴要管理,有的是广告贴,有的是灌水贴,等等。这个论坛的每个贴子下面,都有一个由管理员删除或者修改这个贴子的链接,点击之后进去删除操作的详细页面(包括向用户提示他的贴是因为广告被删还是因为灌水被删等),或者是编辑这个贴子内容的页面。
当然,有的贴子要删有的不要删,做过版主的都知道,这事要真做好,就得细致来。

所以我现在想截获管理员点击“删除此贴”时的鼠标动作,并在后面进行相对应的处理。

现在的难题有这么几个:
1、管理员点击的是哪个链接,是“删除此贴”还只是在点“下一页”?我如何获取用户点击的具体链接?
2、管理员点击链接时,同时按下了什么按键没有?
3、如何在获取了点击链接后,屏蔽浏览器打开新的页面,而是直接由AU3脚本执行后续删贴的细节操作,完成后泡泡提示?
发表于 2009-7-3 22:44:09 | 显示全部楼层
截获那个基本上只能用取得url判定的办法了 用while+sleep循环刷把...

或者干脆就直接把帖子采集下来 在本地做成列表显示 这点autoit还是可以很容易办到的
 楼主| 发表于 2009-7-4 08:18:06 | 显示全部楼层
谢楼上,我一直在斟酌采用何种方式来实现对最终用户更为方便,因为用户的操作内容会很复杂,比如同时会回贴,会同时做一些其它的工作,而且论坛的回复会很多,需要逐楼查看,事实上,我们一直在使用世界之窗这种浏览器,以拖拽链接在新标签页后台打开,然后逐个标签页处理,这样确能很好的提高效率。现在要做的,其实就是在这个基础上更进一步,解决这么一件事:在决定了对某个楼层的贴子进行删除时,希望剩下的操作能自动进行。
因此,希望截获用户的鼠标是否点击了象“删除此楼”之类的链接,好进行后续操作,同时不致干扰用户的其它事务。
每个回贴页面会有很多楼层,由用户判断哪个楼层要删,哪个只是需要修改,哪一个又不需操作。
我是最近两天才找的au3,之前也稍微看了下AHK,我觉得这类功能正应该是AU3应该具备的,请各位版主啊,高人啊,大牛啊,千万出来帮下。
 楼主| 发表于 2009-7-4 12:46:26 | 显示全部楼层
现在问题有一些进展,但遇到了新的问题。_IEATTACH对非IE窗口操作是产生错误,我以为绑定非IE窗口时应该返回0,这样就略过后续操作,如果发现绑定到IE窗口了,就对这个窗口中的内容进行操作。

不知道有没有办法绑定世界之窗这类浏览器当前标签里的$oIE对象?
 楼主| 发表于 2009-7-4 20:54:56 | 显示全部楼层
贴觉了,顶一下,急等。
发表于 2009-7-4 21:12:58 | 显示全部楼层
1、管理员点击的是哪个链接,是“删除此贴”还只是在点“下一页”?我如何获取用户点击的具体链接?
2、管理员点击链接时,同时按下了什么按键没有?
3、如何在获取了点击链接后,屏蔽浏览器打开新的页面,而是直接由AU3脚本执行后续删贴的细节操作,完成后泡泡提示?

思路1:鼠标悬在链接上,此时状态栏一般都有链接的完整显示,设置热键 = _GUICtrlStatusBar_GetText 获取目标句柄的状态栏文字,然后StringInStr 检查获取值是否含有删除帖子对应的链接的部分特征字符,这样就可以判定是否在点击删除帖子了
2.
#include <Misc.au3>
$dll = DllOpen("user32.dll")
While 1
    Sleep ( 250 )
    If _IsPressed("23", $dll) Then
        MsgBox(0,"_IsPressed", "End Key Pressed")
        ExitLoop
    EndIf
WEnd
DllClose($dll)
检测键盘事件简单的可用以上例子代码做个判断,完整的可以参照键盘代码自己写出一个判断语句
3.不知道你意图是什么,总有办法解决的,不过没有截图只有文字描述对于想解决问题是很难的
没有实际环境,不理解提问者的真实意图,想针对性的给建议是非常不容易的
还是楼主再深造下au3的相关函数,熟悉应用了,很多问题都能自己解决了
 楼主| 发表于 2009-7-5 13:12:13 | 显示全部楼层
谢谢 lynfr8 。
lynfr8 果然思路广阔,第一个问题让你想到那个办法,确实不错。我现在发现能够取得所点击的链接对象了.
第二个问题,就只好switch一个按键列表了,挺好。

第三个问题,这么来说:正常情况下,当我点击“删除此楼”的链接时,会在新窗口打开删除该楼层的页面,进行一些确认和留言。现在我既然已经截获了这个点击,那后面的“打开删除该楼层的页面,进行一些确认和留言”的这一部分工作,就交给AU3程序去完成了,这也正是我要做的这个小工具要完成的事情。所以截获点击后,就不需要浏览器再“打开删除该楼层的页面”了,我想要中止浏览器的这一次点击打开新页面的行为。
发表于 2009-7-5 15:23:25 | 显示全部楼层
第三个问题...

检测窗口用WinExists ,写个if判断,当返回值为1就winclose关闭,这样就可以终止打开新页面了
 楼主| 发表于 2009-7-5 16:26:50 | 显示全部楼层
谢谢lynfr8,你真是太勤快了!

因为我这个东西的目的是帮助管理论坛,比如我是这个论坛的管理员,在浏览这个贴子的时候,看到rolaka 的贴子,想删掉rolaka的回复,并在留言里告诉rolaka不要发广告(呵呵,这假设有意思吧)。
……可惜我不是此论坛的管理员,所以我看不到删除rolaka的回复的链接,如果假设这个论坛与我想要管理的论坛一样也是在rolaka的回复下面点“删除文章”这个链接后,打开一个向rolaka留言的页面,里面填入固定格式的留言并提交后,rolaka的回复就被删了,并收到了留言。
因现在想要的就是让AU3程序监控我是否点击了“删除文章”这个链接,如果点击了,AU3程序就帮我完成后面的事,我也不想要再打开那个留言页面了。
你说的方法,应该也挺可行。但我现在用的浏览器是“世界之窗”,新打开的页面是会在新标签页打开的,并且可以被设定为在后面打开,我原来试图关闭窗口,提示出错。
我现在用的办法,是用勾子(pcbar发过的一个MouseSetOnEvent_UDF.au3里有这些功能)截获鼠标点击事件,如果发是点击了“删除文章”,就让这个消息中断,就不会再打开新的窗口了。
很感谢你这么热心,在我其它的贴子里你也帮了很多,太感谢你了!论坛需要这样的高手,看来我选择AU3来做事,没错!!
发表于 2010-7-28 16:39:51 | 显示全部楼层
谢谢lynfr8,你真是太勤快了!

因为我这个东西的目的是帮助管理论坛,比如我是这个论坛的管理员,在浏览 ...
tisiem 发表于 2009-7-5 16:26


http://www.autoitscript.com/forum/index.php?showtopic=64738
让大家都分享下
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 17:03 , Processed in 0.075484 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表