2012年8月13日 星期一

這個網頁的指令發生錯誤,必須要有物件VB


用WebBrowser去開網頁結果開到某些網頁的時候VB都會跳出下面這種狀況


這個網頁的指令碼發生錯誤

行: 5
字元: 1
錯誤: 必須要有物件
程式碼: 0
URL:http://js.wretch.yahoo.net/iframe.php?b=f000&i=5440395&c=1&f=0&e=OC
9mMDAw&h=1701770090...

解決方式:

WebBrowser1.ScriptErrorsSuppressed = true

MSDN 說明
另一種解決方式: For VB

Public Class EWebBrowser
    Inherits System.Windows.Forms.WebBrowser
    Private Iwb2 As SHDocVw.IWebBrowser2
    Protected Overrides Sub AttachInterfaces(ByVal nativeActiveXObject As Object)
        Iwb2 = DirectCast(nativeActiveXObject, SHDocVw.IWebBrowser2)
        Iwb2.Silent = True
        MyBase.AttachInterfaces(nativeActiveXObject)
    End Sub
    Protected Overrides Sub DetachInterfaces()
        Iwb2 = Nothing
        MyBase.DetachInterfaces()
    End Sub
End Class

使用時直接宣告:
Dim Wbrowse As New EWebBrowser()

不要忘記了
Add References -> c:\windows\system32\shdocvw.dll


C# 寫法

class EWebBrowser : System.Windows.Forms.WebBrowser
    
{
        SHDocVw.IWebBrowser2 Iwb2;

        
protected override void AttachInterfaces(object nativeActiveXObject)
        
{
            Iwb2 
= (SHDocVw.IWebBrowser2)nativeActiveXObject;
            Iwb2.Silent 
= true;
            
base.AttachInterfaces(nativeActiveXObject);
        }


        
protected override void DetachInterfaces()
        
{
            Iwb2 
= null;
            
base.DetachInterfaces();
        }


    }

不要忘記了

Add References -> c:\windows\system32\shdocvw.dll

沒有留言:

張貼留言