weeew 发表于 2013-2-28 08:29:21

[以解决]通过GUICtrlCreateObj建立的ie的浏览窗体,怎样能获得当前的窗口的html代码

本帖最后由 weeew 于 2013-3-13 13:02 编辑

我开始时这样的,
GUICtrlCreateObj($oIE, 0, 0, 900, 780) ;对上面的对象设置大小
$oIE.navigate("http://192.168.9.2/test/index.asp")
在窗体里面设置了一个按钮,点击按钮的时候要获得当前窗口里面的html代码
但是 我用
Local$str=_IEBodyReadHTML($oIE)
得到的html代码是 上面的“http://192.168.9.2/test/index.asp”页面的html
不是我要的当前的代码
知道问题了,我那个是框架的,然后只看了前部分代码

weeew 发表于 2013-2-28 08:43:41

本帖最后由 weeew 于 2013-2-28 08:56 编辑

$oIE.locationURL 好像是这个
不会用$Button1=GUICtrlCreateButton("计数",800,780,80)
GUICtrlCreateObj($oIE, 0, 0, 900, 780) ;对上面的对象设置大小
$oIE.navigate("http://192.168.9.2/test/index.asp");打开http://www.autoitx.com/

GUISetState(@SW_SHOW);显示gui
#EndRegion ### END Koda GUI section ### ;koda结束,一种制作gui的东西,方便新手
Dim $nun
dim $zf
Dim $zf1
While 1 ;循环
   Sleep(1);这个可以不要,是让cpu无法上升的语句      
   ;If GUIGetMsg() = -3 Then Exit ;如果按右上角的X就退出
       $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit

                Case $Button1
                        local $urltmp=$oIE.locationURL
                        Local$str=_IEBodyReadHTML($urltmp)
MsgBox(0, '原字符串', $Str)

                Local $Test = StringRegExp($str, 'id=zf>\s+.+?>(\d+)', 3)

                If Not @Error Then MsgBox(0, '匹配数量: ' & UBound($Test), '其中元素为: ' & $Test)

                _ArrayDisplay($Test, UBound($Test))
               
        EndSwitch
       
WEnd;循环结束
得不到那个当前页面的html代码

shqf 发表于 2013-2-28 11:46:49

1、代码不完整。
2、概念不明确。“得到的html代码是 上面的“http://192.168.9.2/test/index.asp”页面的html
不是我要的当前的代码”,“当前的代码”究竟指什么?网页源码、脚本代码还是窗口文本?

weeew 发表于 2013-2-28 11:57:14

回复 3# shqf


这个脚本执行了不是打开了那个初始网页么,然后在里面我浏览了其他的网页,我现在需要得到当前我浏览的网页的 html代码

shqf 发表于 2013-2-28 20:09:38

看不出你访问了哪个第2 个网页,$urltmp是当前显示中IE资源的URL地址,此时其值为“http://192.168.9.2/test/index.asp”。
_IEBodyReadHTML()的参数应是一个 InternetExplorer.Application, 窗口或者框架(Frame)对象的对象变量。
多看看帮助吧。

tix 发表于 2013-2-28 20:55:35

他是说,点击后某按钮后,弹出的对话框或新窗口无法获取。

weeew 发表于 2013-3-1 07:36:48

有没有人帮忙啊

weeew 发表于 2013-3-1 12:14:42

回复 5# shqf


    我就是因为那个readhtml出错了才问的
之前我不是打开了一个地址么,然后我是在那个窗口里面进行网页浏览的,我现在是要知道当前浏览的页面的内容
我不知道怎么能得到当前页面的内容

shqf 发表于 2013-3-1 13:39:09

本帖最后由 shqf 于 2013-3-1 13:51 编辑

去掉此句 local $urltmp=$oIE.locationURL
下句改成 Local$str=_IEBodyReadHTML($oIE)
试试

weeew 发表于 2013-3-1 15:25:34

回复 9# shqf


    不行开始就是这样的,但是出来的是 初始化的那个index.asp的html代码

shqf 发表于 2013-3-1 16:16:40

本帖最后由 shqf 于 2013-3-1 16:22 编辑

你不肯上代码,那我上。你再试试,窗口中浏览的网页变了,读出的网页源码是不是也变了。#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>

_IEErrorHandlerRegister()
Local $oIE = _IECreateEmbedded()
GUICreate("Embedded Web control Test", 640, 580, _
                (@DesktopWidth - 640) / 2, (@DesktopHeight - 580) / 2, _
                $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
GUICtrlCreateObj($oIE, 10, 10, 620, 500)
Local $GUI_Button_ReadHTML = GUICtrlCreateButton("ReadHTML", 280, 520, 100, 30)
GUISetState() ;显示GUI
_IENavigate($oIE, "http://www.autoitx.com/")

; 等待用户关闭窗口
While 1
        Local $msg = GUIGetMsg()
        Select
                Case $msg = $GUI_EVENT_CLOSE
                        ExitLoop
                Case $msg = $GUI_Button_ReadHTML
                        MsgBox(0,_IEPropertyGet($oIE,"locationURL"),_IEDocReadHTML($oIE))
        EndSelect
WEnd
GUIDelete()
Exit

weeew 发表于 2013-3-3 14:17:26

回复 11# shqf


    谢谢兄弟解答,代码我放在上面啊
我可能知道问题了,明天上班去看看
我这个用的是框架的可能就是框架的问题。
页: [1]
查看完整版本: [以解决]通过GUICtrlCreateObj建立的ie的浏览窗体,怎样能获得当前的窗口的html代码