gpt4 book ai didi

c# - 检测顶层框架 BHO

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:41 25 4
gpt4 key购买 nike

对不起我的无知。你必须向我解释事情,我正在涉足新领域。我有一些 JAVA 背景,但主要是 php、javascript。

http://www.codeproject.com/Articles/19971/How-to-attach-to-Browser-Helper-Object-BHO-with-C

我在这篇文章之后做了一些自己的修改,我的问题具体是,我如何检测网页的“顶级框架”,即父文档。我在 OnDocumentComplete 中执行的任何代码都将在页面上的任何 iframe 完成时运行。

我的功能和我实现的解决方案实际上并没有产生正确的结果。

public class BHO:IObjectWithSite
{
WebBrowser webBrowser;
HTMLDocument document;

public void OnDocumentComplete(object pDisp, ref object URL)
{
document = (HTMLDocument)webBrowser.Document;
string href = document.location.href;

//get top level page
if (href == URL.ToString())
{
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("http://mysite.com");
WebReq.Method = "POST";
WebReq.ContentType = "application/x-www-form-urlencoded";
byte[] buffer = Encoding.ASCII.GetBytes("string");
WebReq.ContentLength = buffer.Length;
Stream PostData = WebReq.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
// Prepare web request and send the data.
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
StreamReader streamResponse = new StreamReader(WebResp.GetResponseStream(), true);
string Response = streamResponse.ReadToEnd();

Newtonsoft.Json.Linq.JObject json = Newtonsoft.Json.Linq.JObject.Parse(Response);
string active = json["active"].ToString();
//print to screen
System.Windows.Forms.MessageBox.Show(active, "Title");

}
}

检查 document.location.href 是否匹配 URL 在大多数情况下都有效,但不能保证。所以结果是我在 1 个页面加载时得到多个网络请求和弹出窗口。

最佳答案

最简单的方法是将 Web 浏览器对象 (IWebBrowser2) 存储在 SetSite 方法的对象属性中(C++ 中的示例,但应该直接转换为 C# ):

CComQIPtr<IServiceProvider> pServiceProvider(pUnkSite);
if (!pServiceProvider) {
return E_FAIL;
}

pServiceProvider->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, (LPVOID*)&m_WebBrowser.p);
if (!m_WebBrowser) {
return E_FAIL;
}

这会将浏览器指针存储在对象成员 m_WebBrowser 中。然后你可以比较pDisp参数到OnDocumentComplete:

CComQIPtr<IWebBrowser2> webBrowser(pDisp);
if (webBrowser == m_WebBrowser) {
// This is the top-level page.
}

关于c# - 检测顶层框架 BHO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12946980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com