我是用C#寫的.
public static SHDocVw.WebBrowser GetIEWeb(IntPtr han)
{
int lRes = 0;
var app2_GenerateEvent = Win32API.RegisterWindowMessage("WM_HTML_GETOBJECT");
Win32API.SendMessageTimeout(han, app2_GenerateEvent, IntPtr.Zero, IntPtr.Zero,
Win32API.SendMessageTimeoutFlags.SMTO_ABORTIFHUNG, 1000, ref lRes);
object obj = null;
System.Guid guid = new Guid("6d5140c1-7436-11ce-8034-00aa006009fa");
Win32API.ObjectFromLresult(lRes, ref guid, 0, ref obj);
IServiceProvider sp = obj as IServiceProvider;
object o;
sp.QueryService(new Guid("0002DF05-0000-0000-C000-000000000046"),
new Guid("D30C1661-CDAF-11d0-8A3E-00C04FC9E26E"),
out o);
return o as SHDocVw.WebBrowser;
}
通過這個代碼獲取了Iwebrowser2介面,轉換成了WebBrowser介面,并且注冊了BeforeNavigate2事件.
奇怪的是,當我在自己程式執行部分的代碼段就能獲取到 document.Frames屬性.(就是在我的程式里執行的時候)
而在IE的事件代碼段里(就是在IE程式里執行的時候)獲取 document.Frames老是報型別錯誤.
應該是底層COM介面的IHTMLDocument2_get_frames()方法執行例外,沒有獲取到正確值.
怎么才能再IE的事件代碼里正確獲取到Frame呢?因為我要讀取frame里面的內容.但現在獲取不到frame.
我試過,通過getElementById(framID)得到的HtmlFrameElement無法獲得frame內的內容..更別說修改了..
uj5u.com熱心網友回復:
不是C++builder的問題,
uj5u.com熱心網友回復:
找不到合適板塊發帖,感覺這里大牛多,所以來這里問了,不要沉啊.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/108652.html
上一篇:軟體優化
