精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
vb枚舉IE頁面框架以及獲得跨域框架的控制權/訪問框架頁(轉)
HTML code
<FRAMESET border=0 frameSpacing=0 COLS="50%,*" frameBorder=0>
<FRAME name=topFrame src="http://www.baidu.com">
<FRAME name=topFrame src="http://www.google.com">
</FRAMESET>
上面的用WebBrowser1.Document.frames(0)就表示左邊百度的框架頁,百度的那個搜索框有個屬性 name="wd",這樣我們用下面的vb代碼操作給它賦值:

VB code
Private Sub Command1_Click()
' MsgBox WebBrowser1.Document.frames.length'這行會顯示2,表示有兩個frame框架
' MsgBox WebBrowser1.Document.frames(0).Document.body.innerhtml'這行代碼提示拒絕訪問
WebBrowser1.Document.frames(0).Document.getElementsByName("wd")(0).Value = "測試"'賦值失敗,提示拒絕訪問
End Sub你參考下這個


VB code

' 為運行本程序,應在“菜單->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜單->工程->引用”中添加“Microsoft HTML Object Library”
Sub EnumFrames(ByVal wb As WebBrowser)
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
'Dim pBrowser As SHDocVw.IWebBrowser2
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = wb.Object.Document

' Get an enumerator for the frames
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then

Set pContainer = Nothing

' Enumerate and refresh all the frames
Do While pEnumerator.Next(1, pUnk) = 0

On Error Resume Next

' Clear errors
Err.Clear

' Get the IWebBrowser2 interface
Set pBrowser = pUnk

If Err.Number = 0 Then
For i = 0 To pBrowser.Document.All.length - 1
If UCase(pBrowser.Document.All(i).tagName) = "A" Then
'List1.AddItem pBrowser.All(i).href
Debug.Print Now & pBrowser.Document.All(i).href
Debug.Print Now & pBrowser.Document.All(i).innterHTML
pBrowser.Document.All(i).Click
'Exit For
End If
Next
Debug.Print "Frame: " & pBrowser.LocationURL
End If

Loop

Set pEnumerator = Nothing

End If

End Sub
謝謝樓上,搞定了,貼上完整代碼:


VB code
' 為運行本程序,應在“菜單->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜單->工程->引用”中添加“Microsoft HTML Object Library”,添加“Edanmo's OLE interfaces & functions v1.4”
Private Sub Command1_Click()
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = WebBrowser1.Object.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
Err.Clear
Set pBrowser = pUnk
If Err.Number = 0 Then
If pBrowser.LocationURL = "http://www.baidu.com/" Then
pBrowser.Document.getElementsByName("wd")(0).Value = "測試"
Exit Sub
End If
End If

Loop
Set pEnumerator = Nothing
End If
End Sub


公示下是為了讓大家都學習下,另外貼個我找到的資料,跟樓主的很像,是從這個改過來的吧?呵呵

vb枚舉IE頁面框架以及獲得跨域框架的控制權

為什么寫這個?

1.操作跨域框架。這個資料很難得,我在網上苦苦找了一個星期。以前研究BHO的時候,也是找了好久的。留此存照。在vb吧提問如何取得跨域框架的控制權,僅有一個人對此關注,并且說很簡單,直接分析源代碼,或者用DOM等...恩,現在的vb吧確實很少有深刻的內容了。

2.了解IE編程知識。本以為通過一次BHO編程,已經了解一些IE編程技巧了,結果這次寫這個程序,又辛苦找了十來天的資料?,F在看來,自己果然無知。懂得越多,越覺得自己無知。

下面是代碼



'需要引用Microsoft Html Object Library,Edanmo's Ole interfaces 1.81 ,Microsoft Internet Controls
'其中,Edanmo's Ole interfaces 1.81是Edanmo寫的OLELIB.TLB,請自己在網上搜索下載

'聲明一個全局變量數組IframeIE,用來保存網頁框架的操作對象;至少我是這么操作的,當然有更好的辦法請指教cnoldjohn嬤嬤茶


Private IframeIE() As SHDocVw.WebBrowser

'下面代碼的核心是修改自MVP Edanmo的大作
'枚舉框架,參數WB是一個webbrowser控件的名稱,其中承載著我們要分析的頁面
Sub EnumFrames(ByVal WB As WebBrowser)
Dim j As Integer
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
'獲得頁面的Document接口,然后我們就可以對其為所欲為了
Set pContainer = WB.Object.Document
'很奇怪,有時候上面這段對象賦值出錯,用下面這句就沒有問題了
'Set pContainer = WB.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
If Err.Number = 0 Then
'將框架頁面依次賦值到IframeIE數組中
ReDim Preserve IframeIE(0 To j)
Set IframeIE(j) = pUnk
j = j + 1
End If
Loop
Set pEnumerator = Nothing
End If
End Sub

以上這段代碼的神奇之處在于可以跨域操作框架。

vb枚舉IE頁面框架以及獲得跨域框架的控制權/訪問框架頁

HTML code
<FRAMESET border=0 frameSpacing=0 COLS="50%,*" frameBorder=0>
<FRAME name=topFrame src="http://www.baidu.com">
<FRAME name=topFrame src="http://www.google.com">
</FRAMESET>
上面的用WebBrowser1.Document.frames(0)就表示左邊百度的框架頁,百度的那個搜索框有個屬性 name="wd",這樣我們用下面的vb代碼操作給它賦值:

VB code
Private Sub Command1_Click()
' MsgBox WebBrowser1.Document.frames.length'這行會顯示2,表示有兩個frame框架
' MsgBox WebBrowser1.Document.frames(0).Document.body.innerhtml'這行代碼提示拒絕訪問
WebBrowser1.Document.frames(0).Document.getElementsByName("wd")(0).Value = "測試"'賦值失敗,提示拒絕訪問
End Sub你參考下這個


VB code

' 為運行本程序,應在“菜單->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜單->工程->引用”中添加“Microsoft HTML Object Library”
Sub EnumFrames(ByVal wb As WebBrowser)
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
'Dim pBrowser As SHDocVw.IWebBrowser2
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = wb.Object.Document

' Get an enumerator for the frames
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then

Set pContainer = Nothing

' Enumerate and refresh all the frames
Do While pEnumerator.Next(1, pUnk) = 0

On Error Resume Next

' Clear errors
Err.Clear

' Get the IWebBrowser2 interface
Set pBrowser = pUnk

If Err.Number = 0 Then
For i = 0 To pBrowser.Document.All.length - 1
If UCase(pBrowser.Document.All(i).tagName) = "A" Then
'List1.AddItem pBrowser.All(i).href
Debug.Print Now & pBrowser.Document.All(i).href
Debug.Print Now & pBrowser.Document.All(i).innterHTML
pBrowser.Document.All(i).Click
'Exit For
End If
Next
Debug.Print "Frame: " & pBrowser.LocationURL
End If

Loop

Set pEnumerator = Nothing

End If

End Sub
謝謝樓上,搞定了,貼上完整代碼:


VB code
' 為運行本程序,應在“菜單->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜單->工程->引用”中添加“Microsoft HTML Object Library”,添加“Edanmo's OLE interfaces & functions v1.4”
Private Sub Command1_Click()
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = WebBrowser1.Object.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
Err.Clear
Set pBrowser = pUnk
If Err.Number = 0 Then
If pBrowser.LocationURL = "http://www.baidu.com/" Then
pBrowser.Document.getElementsByName("wd")(0).Value = "測試"
Exit Sub
End If
End If

Loop
Set pEnumerator = Nothing
End If
End Sub


公示下是為了讓大家都學習下,另外貼個我找到的資料,跟樓主的很像,是從這個改過來的吧?呵呵

vb枚舉IE頁面框架以及獲得跨域框架的控制權

為什么寫這個?

1.操作跨域框架。這個資料很難得,我在網上苦苦找了一個星期。以前研究BHO的時候,也是找了好久的。留此存照。在vb吧提問如何取得跨域框架的控制權,僅有一個人對此關注,并且說很簡單,直接分析源代碼,或者用DOM等...恩,現在的vb吧確實很少有深刻的內容了。

2.了解IE編程知識。本以為通過一次BHO編程,已經了解一些IE編程技巧了,結果這次寫這個程序,又辛苦找了十來天的資料。現在看來,自己果然無知。懂得越多,越覺得自己無知。

下面是代碼



'需要引用Microsoft Html Object Library,Edanmo's Ole interfaces 1.81 ,Microsoft Internet Controls
'其中,Edanmo's Ole interfaces 1.81是Edanmo寫的OLELIB.TLB,請自己在網上搜索下載

'聲明一個全局變量數組IframeIE,用來保存網頁框架的操作對象;至少我是這么操作的,當然有更好的辦法請指教cnoldjohn嬤嬤茶


Private IframeIE() As SHDocVw.WebBrowser

'下面代碼的核心是修改自MVP Edanmo的大作
'枚舉框架,參數WB是一個webbrowser控件的名稱,其中承載著我們要分析的頁面
Sub EnumFrames(ByVal WB As WebBrowser)
Dim j As Integer
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
'獲得頁面的Document接口,然后我們就可以對其為所欲為了
Set pContainer = WB.Object.Document
'很奇怪,有時候上面這段對象賦值出錯,用下面這句就沒有問題了
'Set pContainer = WB.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
If Err.Number = 0 Then
'將框架頁面依次賦值到IframeIE數組中
ReDim Preserve IframeIE(0 To j)
Set IframeIE(j) = pUnk
j = j + 1
End If
Loop
Set pEnumerator = Nothing
End If
End Sub

以上這段代碼的神奇之處在于可以跨域操作框架。

vb枚舉IE頁面框架以及獲得跨域框架的控制權/訪問框架頁

HTML code
<FRAMESET border=0 frameSpacing=0 COLS="50%,*" frameBorder=0>
<FRAME name=topFrame src="http://www.baidu.com">
<FRAME name=topFrame src="http://www.google.com">
</FRAMESET>
上面的用WebBrowser1.Document.frames(0)就表示左邊百度的框架頁,百度的那個搜索框有個屬性 name="wd",這樣我們用下面的vb代碼操作給它賦值:

VB code
Private Sub Command1_Click()
' MsgBox WebBrowser1.Document.frames.length'這行會顯示2,表示有兩個frame框架
' MsgBox WebBrowser1.Document.frames(0).Document.body.innerhtml'這行代碼提示拒絕訪問
WebBrowser1.Document.frames(0).Document.getElementsByName("wd")(0).Value = "測試"'賦值失敗,提示拒絕訪問
End Sub你參考下這個


VB code

' 為運行本程序,應在“菜單->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜單->工程->引用”中添加“Microsoft HTML Object Library”
Sub EnumFrames(ByVal wb As WebBrowser)
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
'Dim pBrowser As SHDocVw.IWebBrowser2
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = wb.Object.Document

' Get an enumerator for the frames
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then

Set pContainer = Nothing

' Enumerate and refresh all the frames
Do While pEnumerator.Next(1, pUnk) = 0

On Error Resume Next

' Clear errors
Err.Clear

' Get the IWebBrowser2 interface
Set pBrowser = pUnk

If Err.Number = 0 Then
For i = 0 To pBrowser.Document.All.length - 1
If UCase(pBrowser.Document.All(i).tagName) = "A" Then
'List1.AddItem pBrowser.All(i).href
Debug.Print Now & pBrowser.Document.All(i).href
Debug.Print Now & pBrowser.Document.All(i).innterHTML
pBrowser.Document.All(i).Click
'Exit For
End If
Next
Debug.Print "Frame: " & pBrowser.LocationURL
End If

Loop

Set pEnumerator = Nothing

End If

End Sub
謝謝樓上,搞定了,貼上完整代碼:


VB code
' 為運行本程序,應在“菜單->工程->部件”中添加“Microsoft Internet Controls”
' 并在“菜單->工程->引用”中添加“Microsoft HTML Object Library”,添加“Edanmo's OLE interfaces & functions v1.4”
Private Sub Command1_Click()
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
Dim pBrowser As SHDocVwCtl.WebBrowser_V1

Set pContainer = WebBrowser1.Object.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
Err.Clear
Set pBrowser = pUnk
If Err.Number = 0 Then
If pBrowser.LocationURL = "http://www.baidu.com/" Then
pBrowser.Document.getElementsByName("wd")(0).Value = "測試"
Exit Sub
End If
End If

Loop
Set pEnumerator = Nothing
End If
End Sub


公示下是為了讓大家都學習下,另外貼個我找到的資料,跟樓主的很像,是從這個改過來的吧?呵呵

vb枚舉IE頁面框架以及獲得跨域框架的控制權

為什么寫這個?

1.操作跨域框架。這個資料很難得,我在網上苦苦找了一個星期。以前研究BHO的時候,也是找了好久的。留此存照。在vb吧提問如何取得跨域框架的控制權,僅有一個人對此關注,并且說很簡單,直接分析源代碼,或者用DOM等...恩,現在的vb吧確實很少有深刻的內容了。

2.了解IE編程知識。本以為通過一次BHO編程,已經了解一些IE編程技巧了,結果這次寫這個程序,又辛苦找了十來天的資料?,F在看來,自己果然無知。懂得越多,越覺得自己無知。

下面是代碼



'需要引用Microsoft Html Object Library,Edanmo's Ole interfaces 1.81 ,Microsoft Internet Controls
'其中,Edanmo's Ole interfaces 1.81是Edanmo寫的OLELIB.TLB,請自己在網上搜索下載

'聲明一個全局變量數組IframeIE,用來保存網頁框架的操作對象;至少我是這么操作的,當然有更好的辦法請指教cnoldjohn嬤嬤茶


Private IframeIE() As SHDocVw.WebBrowser

'下面代碼的核心是修改自MVP Edanmo的大作
'枚舉框架,參數WB是一個webbrowser控件的名稱,其中承載著我們要分析的頁面
Sub EnumFrames(ByVal WB As WebBrowser)
Dim j As Integer
Dim pContainer As olelib.IOleContainer
Dim pEnumerator As olelib.IEnumUnknown
Dim pUnk As olelib.IUnknown
'獲得頁面的Document接口,然后我們就可以對其為所欲為了
Set pContainer = WB.Object.Document
'很奇怪,有時候上面這段對象賦值出錯,用下面這句就沒有問題了
'Set pContainer = WB.Document
If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
Set pContainer = Nothing
Do While pEnumerator.Next(1, pUnk) = 0
On Error Resume Next
If Err.Number = 0 Then
'將框架頁面依次賦值到IframeIE數組中
ReDim Preserve IframeIE(0 To j)
Set IframeIE(j) = pUnk
j = j + 1
End If
Loop
Set pEnumerator = Nothing
End If
End Sub

以上這段代碼的神奇之處在于可以跨域操作框架。
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB功能模塊:最全的VB操作網頁功能模塊
VB關于webbrowser相關操作大全
VB對IE瀏覽器完全控制
VB實現文件數據對SQLServer上傳下載
VB使用WebBrowser讀取網頁內容
vb中使用正則的幾個方法
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 呈贡县| 博客| 莱西市| 山阴县| 盐津县| 镇雄县| 库尔勒市| 稻城县| 临海市| 嘉义县| 郓城县| 玉门市| 平湖市| 博野县| 龙岩市| 库车县| 顺昌县| 东乡县| 亚东县| 海伦市| 长沙市| 德格县| 儋州市| 赫章县| 车致| 左云县| 大田县| 万盛区| 江孜县| 健康| 略阳县| 香港 | 磐安县| 涟源市| 林周县| 大同市| 青河县| 科技| 洛浦县| 通州区| 石阡县|