我可以通过XPCOM列出"MozillaWindowClass" HWND的选项卡吗?
Can I list Tabs of a "MozillaWindowClass" HWND via XPCOM?
IE
提供了从IE框架HWND
轻松访问IWebBrowser2
和IHtmlDocument2
。因此,您EnumWindows
和EnumChildWindows
然后测试类,一旦找到合适的类,您可以轻松地与它们进行交互。
如果有办法通过
XPCOM
和C++列出"MozillaWindowClass"
中所有打开的Mozilla Firefox选项卡(具有其HWND
)?
我已经用谷歌搜索了很长时间,但找不到太多关于这个主题的信息。我不想开发扩展/附加组件,但想从不相关的 EXE 外部控制浏览器,而不是从扩展 DLL。或者至少对它有一些只读访问权限。
您不能像在IE中使用COM一样在外部将C++/XPCOM与Firefox一起使用,您只能在扩展的二进制组件中使用C++/XPCOM。 因此,如果不编写扩展,您将无法做到这一点,此时侦听来自JS的选项卡事件并通知您的二进制组件会更容易。
请注意,在FF中支持二进制组件是PITA,所以我不建议你在没有充分理由的情况下走这条路。
但是,一旦您拥有扩展和二进制组件,从选项卡中获取 HWND 的方法是这样的(希望它仍然有效,我们停止支持 FF 许多版本):
static HWND GetWndHandle(nsIXULWindow * window) {
HWND hwnd = NULL;
nsCOMPtr<nsIDocShell> docshell;
nsresult res = window->GetDocShell(getter_AddRefs(docshell));
if(NS_SUCCEEDED(res)) {
nsCOMPtr<nsIBaseWindow> basewnd(do_QueryInterface(docshell));
if(basewnd) {
res = basewnd->GetParentNativeWindow((nativeWindow*)&hwnd);
if(NS_FAILED(res)) hwnd = NULL;
}
}
return hwnd;
}
有了这个和来自JS的通知,您的二进制组件可以提供查找以查找HWND的选项卡并使用它做一些事情。
相关文章:
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 将--whole archive链接器选项与CMake和具有其他库依赖项的库一起使用
- 通过选项卡的文本设置QTabWidget顺序
- 通过ccmake在cmake中缓存依赖选项
- 如何传递多个 std::文件系统选项?
- 基于编译器选项的编译二进制路径
- "perf_event_attr"结构的"read_format"属性的选项到底是什么?
- 如何应用 libcurl 的持久连接选项
- 文件中.dat Dlib 选项
- LLVM | codegen 用于带有命令行选项的程序输入功能
- 编译 Boost 时在 OS X 上的"ld:未知选项:-soname"
- 按钮悬停在 QT 中垂直布局的选项卡小部件中不起作用
- Visual Studio C++ 它只构建选项卡中显示的文件吗?
- 在C++不适用于猜数字游戏的情况下再次播放选项
- Qt5 用户界面编译器:-i 选项不可用
- CMake - 更改共享库链接选项
- 从 C++ 运行的进程偶尔会错过某个选项