- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对不起我的无知。你必须向我解释事情,我正在涉足新领域。我有一些 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/
我正在开发一个需要多个窗口的程序,第一个出现的是登录窗口,我使用了 Toplevel 小部件以使其他窗口成为其子窗口,但这段代码一直显示两个窗口而不是一个。 from Tkinter import F
我不知道一般如何实现这一点,但为了清楚起见,我会特别询问一个实例: Sexplib 对我来说看起来很有趣。我想玩弄它。我已经下载了它,安装得很好(反正我很确定)等等。我想在顶层使用“with sexp
我在 makefile 中设置一个变量,如下所示: SOMEVAR = foo 此 makefile 稍后包含一些其他 makefile,在其中进行实际的程序构建: include generic/M
from tkinter import* import tkinter as tk def topLevel(): top=Toplevel() top.title("Listbox
我想查看乘法函数 (*) 的类型,因此我将其输入 OCaml 顶层。 # (*) 然而,顶层回应: (*);; 1: this is the start of a comment. 然后消耗我输入的任
我喜欢Try Ocaml的顶层行为:;; 在我按下 Enter 时隐式添加,并且我能够使用 Shift-Enter 进行多行编辑。 是否有可能在标准顶层或 utop 中获得相同的功能? 最佳答案 目前
我想知道,在 Ocaml 中,是否有部分输入信息。对于无法编译的程序,可以通过顶层/编译器的某些现有功能来绘制吗?让我解释。 在 Ocaml 中,众所周知,可以通过 -annot 文件检索推断类型。但
当我将分层 SVG 文件加载到 Illustrator 中时,所有图层都按其应有的方式工作,但它们始终位于新图层下;我没有指定“第 1 层”。 如何创建一个 SVG,使我的顶层最终也成为 Illust
我遇到了让我的 TreeView 填充已创建的顶层窗口的挑战,已尝试 fill=“x”和 fill=“both”,但没有得到结果。有任何建议这样做。 from tkinter import ttk i
标签在 div 中
我有以下布局: target target not target 我的问题是,如何定位所有顶级 标签(参见 target )使用 .fin
大家好,我有一个 div.mapFullscreenContainer #mapFullscreenContainer { position:fixed; top:0; lef
我有一个以编程方式创建的标签栏 Controller ,名为 TPastJourneyTabbar。当我单击 TableView 并调用 didSelectRowAtIndexPath: 时,我的选项
我是一名优秀的程序员,十分优秀!