找回密码
 加入
搜索
查看: 4889|回复: 11

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

  [复制链接]
发表于 2013-2-28 08:29:21 | 显示全部楼层 |阅读模式
本帖最后由 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
不是我要的当前的代码
知道问题了,我那个是框架的,然后只看了前部分代码
 楼主| 发表于 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), '其中[0]元素为: ' & $Test[0])

                _ArrayDisplay($Test, UBound($Test))
                
        EndSwitch
         
 WEnd;循环结束
得不到那个当前页面的html代码
发表于 2013-2-28 11:46:49 | 显示全部楼层
1、代码不完整。
2、概念不明确。“得到的html代码是 上面的“http://192.168.9.2/test/index.asp”页面的html
不是我要的当前的代码”,“当前的代码”究竟指什么?网页源码、脚本代码还是窗口文本?
 楼主| 发表于 2013-2-28 11:57:14 | 显示全部楼层
回复 3# shqf


  这个脚本执行了不是打开了那个初始网页么,然后在里面我浏览了其他的网页,我现在需要得到当前我浏览的网页的 html代码
发表于 2013-2-28 20:09:38 | 显示全部楼层
看不出你访问了哪个第2 个网页,$urltmp是当前显示中IE资源的URL地址,此时其值为“http://192.168.9.2/test/index.asp”。
_IEBodyReadHTML()的参数应是一个 InternetExplorer.Application, 窗口或者框架(Frame)对象的对象变量。
多看看帮助吧。
发表于 2013-2-28 20:55:35 | 显示全部楼层
他是说,点击后某按钮后,弹出的对话框或新窗口无法获取。
 楼主| 发表于 2013-3-1 07:36:48 | 显示全部楼层
有没有人帮忙啊
 楼主| 发表于 2013-3-1 12:14:42 | 显示全部楼层
回复 5# shqf


    我就是因为那个readhtml出错了才问的
之前我不是打开了一个地址么,然后我是在那个窗口里面进行网页浏览的,我现在是要知道当前浏览的页面的内容
我不知道怎么能得到当前页面的内容
发表于 2013-3-1 13:39:09 | 显示全部楼层
本帖最后由 shqf 于 2013-3-1 13:51 编辑

去掉此句 local $urltmp=$oIE.locationURL
下句改成 Local  $str=_IEBodyReadHTML($oIE)
试试
 楼主| 发表于 2013-3-1 15:25:34 | 显示全部楼层
回复 9# shqf


    不行开始就是这样的,但是出来的是 初始化的那个index.asp的html代码
发表于 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
 楼主| 发表于 2013-3-3 14:17:26 | 显示全部楼层
回复 11# shqf


    谢谢兄弟解答,代码我放在上面啊
我可能知道问题了,明天上班去看看
我这个用的是框架的可能就是框架的问题。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-22 23:41 , Processed in 0.083570 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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