tisiem 发表于 2009-7-4 20:16:43

点击内嵌IE的链接后,如何指定一定还要在内嵌IE里来打开这个新页面?

为了做一个辅助管理论坛的小工具,一转眼已经在这论坛混了两三天了,很多东西慢慢的明白了,但还有很多新问题又浮现出来。

我现在使用一个内嵌的IE来打开我想要操作的页面,这个页面上的链接在点击后会在新的IE窗口中打开,如果使用“世界之窗”这类浏览器的话,就会在新的标签页打开(这些页面的链接,已经被设定为在新窗口打开的即target="_blank")。我在内嵌IE里打开一个页面后,点击其中的链接,新打开的窗口又跑到世界之窗里面去了。

现在想要能控制新的页面还是在内嵌的那个IE里打开,如何做呢?
或者更进一步,内嵌两个IE对象,点击其中一个内嵌IE里的页面链接后,在另一个内嵌IE里打开这个页面?

lynfr8 发表于 2009-7-4 22:50:52

本帖最后由 lynfr8 于 2009-7-5 17:11 编辑

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

$Form1 = GUICreate("iAppCat 1.0",700,530)
$oIE = _IECreateEmbedded ()
$GUIActiveX = GUICtrlCreateObj($oIE,16, 24, 668, 444)

------------------------------------------------------------
认真再测试过几次了,的确不行,抱歉了

kn007 发表于 2009-7-4 22:57:57

学习了。。。

passkalilo 发表于 2009-7-5 10:31:15

#include
#include
#include

$Form1 = GUICreate("iAppCat 1.0",700,530)
$oIE = _IECreateEmbedded ()
$GUIActiveX = GUICtrlCreateObj($oIE,16, 24, 668, 444)


这样的GUI点击链接还是在GUI打开的
lynfr8 发表于 2009-7-4 22:50 http://www.autoitx.com/images/common/back.gif

我试了好像不行啊,#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

$Form1 = GUICreate("iAppCat 1.0",700,530)
$oIE = _IECreateEmbedded ()
$GUIActiveX = GUICtrlCreateObj($oIE,16, 24, 668, 444)
GUISetState(@sw_show)

_IENavigate($oIE,"www.hao123.com")
While 1
   Sleep(100)       
WEnd点击里面的链接还是会弹出新窗口.

另外非内嵌IE也有这个问题,模拟点击后弹出来的新IE窗口不知有什么方法将它捕获,用_IEAttach 有时碰到相同的窗口难以区分, lynfr8兄弟能不能帮忙一块来研究一下这个问题

tisiem 发表于 2009-7-5 11:55:37

lynfr8 大大,试了你的代码,确实还是在新窗口打开的,我遇到的问题和4楼所说差不多,去找新窗口绑定比较费时。最好是在内嵌的IE里打开,或者内嵌两个IE,一个用来显示第一个页面,另一个用来打开链接。

麻烦大家多关注。

zhj0887 发表于 2009-7-5 13:04:41

关注中……

lynfr8 发表于 2009-7-5 17:10:59

#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1)
$new=GUICreate('',600, 647, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE,"CLOSE")
$link="http://www.baidu.com/"
$obj=objCreate("shell.explorer.2")
$objPanel=GUICtrlCreateObj($obj,0,0,600, 600)
$obj.Navigate($link)
GUISetState()
While 1
      Sleep(100)
        WEnd
        Func CLOSE()
        Exit
EndFunc这段代码只是部分实现了楼主所要的
如果是外链还是会蹦出新的IE窗口
有个思路就是获取点击的链接然后关闭弹出的窗口再$obj.Navigate获取的新链接
比较麻烦,看有没有其他方法啦

kn007 发表于 2009-7-5 17:59:59

http://www.autoitx.com/forum.php?mod=viewthread&tid=4390&page=1&fromuid=7644076#pid29150
传送门,自己看看这个源码,看能不能吸取到什么

tisiem 发表于 2009-7-5 19:40:30

谢谢。

lynfr8 ,你这方法原理上应该挺好,就是效率可能不实用。
kn007,你给的这个链接我之前就看过的,论坛还有另外一个浏览器源码,我也都看了,但都没有实现我前文所述的目标。你给的链接的这个也是一样,点击设定为外链的,还是会跳出到世界之窗打开。

其实我感觉嵌入IE的功能上肯定还是比不过我们现在用的这些浏览器,所以用内嵌IE也是没办法的办法了,但即使如此,也有这些问题现在横在面前。

我昨晚看了GUIRegisterMsg的相关帮助,感觉有更高效的办法来实现,但前提就是要得知webbrowser这个控件有哪些消息,然后才对编写对应的处理函数,感觉这是一个比较复杂但完善的方法。不知大家有没有关于这一方面的资料?

kn007 发表于 2009-7-5 19:44:33

回复http://www.autoitx.com/forum.php?mod=viewthread&tid=8144&page=1&fromuid=7644076#pid65073 tisiem :
哦,这样啊。。。

passkalilo 发表于 2009-7-9 02:40:10

楼主研究的如何了,

tisiem 发表于 2009-7-9 14:36:03

楼上,我在找了一些关于webbrowser控件的相关资料之后,觉得好象只有通过对控件的NewNavigate事件编程才可以来实现这个目的,但在au3里,不知道如何来编写回调函数,以对内嵌控件的事件进行响应。
为此我发了另一个贴子求助: http://www.autoitx.com/forum.php?mod=viewthread&tid=8160
高手帮我出出主意啊。

cnsnc 发表于 2009-7-9 20:55:44

本帖最后由 cnsnc 于 2009-7-9 21:02 编辑

如果链接有 target="_blank",那在当前页面中打开链接是很容易的事情。
网页打开之后读取源码到变量,然后用字符串替换把变量中 target="_blank"替换成""(空字符)。把替换后的变量写回网页,然后再点击链接就可以。
用字符串函数和UDF IE. au3操作好了

rho123 发表于 2009-7-10 00:28:40

{:3_88:}有必要那么麻烦啊??获取你要点击的连接 直接在当前的内嵌IE中打开不就行了??

tisiem 发表于 2009-7-10 22:03:18

为什么这个论坛有一种习惯就是回避问题的解决方法而希望去改变问题的提法呢?
页: [1] 2
查看完整版本: 点击内嵌IE的链接后,如何指定一定还要在内嵌IE里来打开这个新页面?