乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      vb枚舉IE頁面框架以及獲得跨域框架的控制權(quán)/訪問框架頁(轉(zhuǎn))

       franklinfj 2013-11-23
      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頁面框架以及獲得跨域框架的控制權(quán)

      為什么寫這個?

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

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

      下面是代碼



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

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


      Private IframeIE() As SHDocVw.WebBrowser

      '下面代碼的核心是修改自MVP Edanmo的大作
      '枚舉框架,參數(shù)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數(shù)組中
      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頁面框架以及獲得跨域框架的控制權(quán)/訪問框架頁

      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頁面框架以及獲得跨域框架的控制權(quán)

      為什么寫這個?

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

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

      下面是代碼



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

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


      Private IframeIE() As SHDocVw.WebBrowser

      '下面代碼的核心是修改自MVP Edanmo的大作
      '枚舉框架,參數(shù)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數(shù)組中
      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頁面框架以及獲得跨域框架的控制權(quán)/訪問框架頁

      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頁面框架以及獲得跨域框架的控制權(quán)

      為什么寫這個?

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

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

      下面是代碼



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

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


      Private IframeIE() As SHDocVw.WebBrowser

      '下面代碼的核心是修改自MVP Edanmo的大作
      '枚舉框架,參數(shù)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數(shù)組中
      ReDim Preserve IframeIE(0 To j)
      Set IframeIE(j) = pUnk
      j = j + 1
      End If
      Loop
      Set pEnumerator = Nothing
      End If
      End Sub

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

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多