locked
vb2008 ie自動運行 RRS feed

  • 問題

  • vb2008 ie自動運行

    可以做到的嗎?

    我不是指在程式加入一個 WebBrowser1

    WebBrowser1.Document.GetElementById("xxx").SetAttribute("value", "xxxx")

    2011年8月21日 下午 12:21

解答

  • 測試了,,都是不行

    我vb的能力太差了



        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            Dim ie As Object = CreateObject("InternetExplorer.Application")
            ie.Visible = True
            ie.Navigate("http://hk.yahoo.com/")
        End Sub


    請改成這樣試試

    Dim ie As Object   '這樣就是宣告成物件成員
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        Me.ie = CreateObject("InternetExplorer.Application") '在Form_Load事件再給值
        Me.ie.Visible = True
        Me.ie.Navigate("http://hk.yahoo.com/")
      End Sub
    
    
    

     


    Shadowと愉快なコード達
    • 已標示為解答 手指 2011年9月1日 上午 05:29
    2011年8月22日 上午 10:10

所有回覆

  • 如果只是要開啟特定網址

    可以使用Process.Start 並指定特定網址為參數

      Process.Start("http://hk.yahoo.com")
    

     


    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

     

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

     

    在標題或文章註明很急
    不會增加網友回覆速度
    2011年8月21日 下午 12:50
  • 自動運行的定義是什麼 ? 是指IE會半夜自己打開電腦上網 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2011年8月21日 下午 02:30
    版主
  • 我想問一問,我寫了是這樣

    Dim ie As Object = CreateObject("InternetExplorer.Application")
            Dim strURL As String = "http://hk.yahoo.com/"
            With ie
                .Visible = True
                .Navigate(strURL)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("p").Value = "test"
                .Document.All("searchsubmit").Click()
            End With

    ------------------------------------------------------------------------------------------

    Dim ie As Object = CreateObject("InternetExplorer.Application")
            Dim strURL As String = "http://www.google.com.hk/"
            With ie
                .Visible = True
                .Navigate(strURL)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("q").Value = "test"
                .Document.All("btnG").Click()
            End With
        End Sub

    我想把2個連按起來

    先去yahoo,然後到 google

    2011年8月21日 下午 02:45
  • 你有仔細想一下 Alex Lee 在上面寫的內容嗎 ? 有用腦袋想才叫學習.

    2011年8月21日 下午 03:55
  • Process.Start("http://hk.yahoo.com")

    是去到yahoo,,不過開了一個新視窗


    • 已編輯 手指 2011年8月21日 下午 04:19
    2011年8月21日 下午 03:59
  • 為什麼你要這麼做 ?

     

    張貼文章應注意事項及應提供資訊

    禁止討論惡意程式的撰寫

     

    基於公共利益的維護,本版禁止討論惡意程式的撰寫,但惡意程式的防制程式撰寫則不在此限。

     

    若需討論惡意程式撰寫,請到民間相關論壇討論。

     

    惡意程式的定義:

    1. 一般定義的蠕蟲、木馬、廣告、病毒等。
    2. 資源損耗程式,包含阻斷式攻擊、大量開啟圖片導致資源耗盡等。
    3. 漏洞的攻擊討論,例如隱碼攻擊程式。
    4. 破密、破保護、測試或截取帳號密碼程式。
    5. 可能會造成他人損害的程式。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2011年8月21日 下午 04:07
    版主
  • 因為我想 登入 2個網站

    先 登入第一個網,然後 登入第2個網
    2011年8月21日 下午 04:17
  • 有沒有其他的教學網頁?

     

    2011年8月21日 下午 04:49
  • 想學VB不是用嘴巴說一說就算數的
    SHADOW , Bill , 小朱 等人提供的線上免費資源
    你有看了嗎?
    找個合適的範例練習吧
    (我查過了....香港人新辦圖書證是免費的)

    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度
    2011年8月21日 下午 06:25
  • 我想問一問,,我這樣寫有沒有問題?

    Dim ie As Object = CreateObject("InternetExplorer.Application")
            Dim strURL As String = "http://hk.yahoo.com/"
            Dim strURL2 As String = "http://www.google.com.hk/"
            With ie
                .Visible = True
                .Navigate(strURL)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("p").Value = "test"
                .Document.All("searchsubmit").Click()
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Navigate(strURL2)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("q").Value = "test"
                .Document.All("btnG").Click()
                Do While .Busy
                    Application.DoEvents()
                Loop
            End With

    因為太快了,
    如果我想加一個 延遲,,應該怎樣做?
    我知道加了Do While .Busy
                    Application.DoEvents()
                Loop
    但是,我想 延遲 5秒,先到下一個
    2011年8月22日 上午 05:15
  • 希望你的行為是正當的! 如 Bill Chung 所說的

    Dim ie As Object = CreateObject("InternetExplorer.Application")
            Dim strURL As String = "http://hk.yahoo.com/"
            Dim strURL2 As String = "http://www.google.com.hk/"
            With ie
                .Visible = True
                .Navigate(strURL)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("p").Value = "test"
                .Document.All("searchsubmit").Click()
                '
                System.Threading.Thread.Sleep(5000)
                '
                .Navigate(strURL2)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("q").Value = "test"
                .Document.All("btnG").Click()

            End With

    2011年8月22日 上午 06:15
  • Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            WebBrowser1.Navigate("http://hk.yahoo.com/")
            While Not WebBrowser1.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
            End While
            WebBrowser1.Document.GetElementById("p").SetAttribute("value", "test")
            WebBrowser1.Document.GetElementById("searchsubmit").InvokeMember("click")
            Timer1.Enabled = True
            Timer1.Interval = 5000
        End Sub

        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            WebBrowser1.Navigate("http://hk.yahoo.com/")
            While Not WebBrowser1.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
            End While
            WebBrowser1.Document.GetElementById("p").SetAttribute("value", "test")
            WebBrowser1.Document.GetElementById("searchsubmit").InvokeMember("click")

        End Sub
    End Class

    我這樣做,每5秒就可以尋找新的資料,

    我想問一問,如果要變成我現在寫的要怎樣?

    2011年8月22日 上午 07:33
  • 我想問一問,如果要變成我現在寫的要怎樣?


    把以下的Code貼到Button1_Click事件取代就行了?

    Dim ie As Object = CreateObject("InternetExplorer.Application")
        Dim strURL As String = "http://hk.yahoo.com/"
        Dim strURL2 As String = "http://www.google.com.hk/"
        With ie
          .Visible = True
          .Navigate(strURL)
          Do While .Busy
            Application.DoEvents()
          Loop
          .Document.All("p").Value = "test"
          .Document.All("searchsubmit").Click()
          '
          System.Threading.Thread.Sleep(5000)
          '
          .Navigate(strURL2)
          Do While .Busy
            Application.DoEvents()
          Loop
          .Document.All("q").Value = "test"
          .Document.All("btnG").Click()
    
        End With
    
    
    
    

     


    Shadowと愉快なコード達
    2011年8月22日 上午 08:20
  • Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim ie As Object = CreateObject("InternetExplorer.Application")
            Dim strURL As String = "http://hk.yahoo.com/"
            With ie
                .Visible = True
                .Navigate(strURL)
                Do While .Busy
                    Application.DoEvents()
                Loop
                System.Threading.Thread.Sleep(5000)
                .Document.All("p").Value = "test"
                .Document.All("searchsubmit").Click()

            End With
        End Sub


    我想加一個不停重覆.Document.All("p").Value = "test"
                .Document.All("searchsubmit").Click()


    我試過把Code貼到timer1,但是,會不停開新網頁

    2011年8月22日 上午 08:32
    1. 把Dim ie As Object 寫在函數外,讓他成為物件成員變數
    2. 在Form_Load事件裡再ie  = CreateObject("InternetExplorer.Application") ,指派ie變數,如此一來只會開一次網頁
    3. 部份代碼如下
     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
        Timer1.Enabled = True
        Timer1.Interval = 5000
      End Sub
    
      Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        
        Dim strURL As String = "http://hk.yahoo.com/"
      
        ie.Visible = True
        ie.Navigate(strURL)
        Do While ie.Busy
        Application.DoEvents()
        Loop
       
        ie.Document.All("p").Value = "test"
        ie.Document.All("searchsubmit").Click()
    
        System.Threading.Thread.Sleep(5000)
    
      End Sub
    
    
    

     


    Shadowと愉快なコード達
    2011年8月22日 上午 08:45
  • ie 未宣告 ,

    我應該要怎樣做?

    在Form_Load事件裡再ie  = CreateObject("InternetExplorer.Application") ,指派ie變數,如此一來只會開一次網頁

    如果要只會開一次網頁,宣告要怎樣做?


    2011年8月22日 上午 08:54
  • ie 未宣告 ,

    我應該要怎樣做?


    1. 把Dim ie As Object 寫在函數外,讓他成為物件成員變數

    Shadowと愉快なコード達
    2011年8月22日 上午 08:56
  • Dim ie As Object = ??

    2011年8月22日 上午 09:07
  • 先不用給值

    在Form_Load給值就行了


    Shadowと愉快なコード達
    2011年8月22日 上午 09:26
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ie As Object = CreateObject("InternetExplorer.Application")

        End Sub

    都是會不停開新的網頁,,

    2011年8月22日 上午 09:43
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim ie As Object = CreateObject("InternetExplorer.Application")

        End Sub

    都是會不停開新的網頁,,


    大概是小弟表達能力不好,請這樣試試

    1. 把Dim ie As Object 寫在事件外宣告,讓他成為物件成員變數
    2. 在Form1_Load事件裡再ie = CreateObject("InternetExplorer.Application")

    會不停開新的網頁,表示您其他事件應該重覆不停跑

    CreateObject("InternetExplorer.Application")這句話了


    Shadowと愉快なコード達
    2011年8月22日 上午 09:48
  • 測試了,,都是不行

    我vb的能力太差了



        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            Dim ie As Object = CreateObject("InternetExplorer.Application")
            ie.Visible = True
            ie.Navigate("http://hk.yahoo.com/")
        End Sub

    2011年8月22日 上午 10:05
  • 測試了,,都是不行

    我vb的能力太差了



        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

            Dim ie As Object = CreateObject("InternetExplorer.Application")
            ie.Visible = True
            ie.Navigate("http://hk.yahoo.com/")
        End Sub


    請改成這樣試試

    Dim ie As Object   '這樣就是宣告成物件成員
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
        Me.ie = CreateObject("InternetExplorer.Application") '在Form_Load事件再給值
        Me.ie.Visible = True
        Me.ie.Navigate("http://hk.yahoo.com/")
      End Sub
    
    
    

     


    Shadowと愉快なコード達
    • 已標示為解答 手指 2011年9月1日 上午 05:29
    2011年8月22日 上午 10:10
  • 行了 =]

    另外有一句我不明白

         ie = Nothing ' 釋放IE 物件

    釋放IE 物件 是啥?

    2011年8月22日 上午 10:23
  • 平常New出來的物件再指派給變數,該變數會佔記憶體空間

    上述您寫

         ie = Nothing ' 釋放IE 物件

    當變數指到Nothing表示沒在使用,.net framework過一段時間就會把該變數佔用的記憶體回收

     


    Shadowと愉快なコード達
    2011年8月22日 上午 10:36
  • 我想問一下 ,

    如果是WebBrowser

    我就可以  WebBrowser1.AllowNavigation = False

    變成現在我寫是,我寫了 ie.AllowNavigation = False ,, 但是不成功

    還有WebBrowser1.stop() ,, 就可以停止,,但是,,我寫了ie.stop ,,都是不成功

    是不是我寫錯了?


    2011年8月23日 上午 03:37
  • 2011年8月23日 上午 05:09
  •  

    網頁:http://mybest.com.hk/

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim ie As Object = CreateObject("InternetExplorer.Application")
            Dim strURL As String = "http://mybest.com.hk/"
            With ie
                .Visible = True
                .Navigate(strURL)
                Do While .Busy
                    Application.DoEvents()
                Loop
                .Document.All("username").Value = "test19"
                .Document.All("password").Value = "123456"

                Dim oLogin As HtmlElementCollection = .Document.GetElementsByTagName("button")
                For Each element As HtmlElement In oLogin
                    If element.GetAttribute("type") = "submit" Then
                        element.InvokeMember("click")
                        Exit For
                    End If
                Next

            End With
        End Sub

    不能登入,我寫錯了啥??



    2011年8月23日 下午 03:37
  • 自己架個網站。

    放個 post 網頁。

    用測試程式去連是否能正確丟資料?

    不可以,那你程式寫錯,可以,那你的目標網站有保護,不用試了。

     

    很多東西,等你累積足夠的經驗,你自然知道如何做。你沒有經驗,人家給你看 code / sample ,你還在原處打轉,就不太會有人理你了。

     

    你沒寫過 ASP.NET 或 dhtml 及搞懂 http protocol 前,放棄 WebBrowser Control / InternetExplorer Object 吧。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2011年8月23日 下午 05:29