检测窗口中打开的网页
来源:互联网 发布:北大发展研究院知乎 编辑:程序博客网 时间:2024/05/16 09:19
在利用webbrowser编写浏览器时,需要对页面进行操作,但是又苦于不知道如何获取到这个页面的句柄而苦恼。
windows编程中,窗口是最基本的单元,那么浏览器其实就是一个主窗口,多个标签网页是这个主窗口的子窗口,且它们的类名为Internet Explorer_Server,因为它是子窗口,而且类名也是固定的,那么就可以利用子窗口枚举函数来获取页面的句柄。
子窗口枚举
BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc, LPARAM lParam);
hWndParent 父窗口句柄
lpEnumFunc 回调函数
lParam 指向一段有效内存,返回用户需要的值
这个函数的核心是回调函数,枚举函数会依次传递子窗口句柄和lParam调用该函数,如果回掉函数返回FALSE,那么枚举函数结束枚举,否则一直运行直到所有子窗口都已经枚举完。用户可以通过回调函数自定义操作,如获取指定类名的子窗口。
例:
BOOL CALLBACK GetCurrentHwnd(HWND hwnd, LPARAM lParam)
{
TCHAR buf[256];
web_browser tmp_hwd = {0};
::GetClassName(hwnd, (LPTSTR)&buf, 256);//获取类名
if (!_tcscmp(buf, _T("Internet Explorer_Server")))
{
*(HWND*)lParam = hwnd;
}
return TRUE;
}
EnumChildWindows(hHostWnd, GetCurrentHwnd, (LPARAM)&(hWebWnd));
以上代码实现了获取主窗口hHostWnd下的网页窗口。如果主窗口下含有多个网页窗口,那么枚举的时候是依次枚举的,也就是按照网页打开的顺序,晚打开的晚枚举。
windows编程中,窗口是最基本的单元,那么浏览器其实就是一个主窗口,多个标签网页是这个主窗口的子窗口,且它们的类名为Internet Explorer_Server,因为它是子窗口,而且类名也是固定的,那么就可以利用子窗口枚举函数来获取页面的句柄。
子窗口枚举
BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc, LPARAM lParam);
hWndParent 父窗口句柄
lpEnumFunc 回调函数
lParam 指向一段有效内存,返回用户需要的值
这个函数的核心是回调函数,枚举函数会依次传递子窗口句柄和lParam调用该函数,如果回掉函数返回FALSE,那么枚举函数结束枚举,否则一直运行直到所有子窗口都已经枚举完。用户可以通过回调函数自定义操作,如获取指定类名的子窗口。
例:
BOOL CALLBACK GetCurrentHwnd(HWND hwnd, LPARAM lParam)
{
TCHAR buf[256];
web_browser tmp_hwd = {0};
::GetClassName(hwnd, (LPTSTR)&buf, 256);//获取类名
if (!_tcscmp(buf, _T("Internet Explorer_Server")))
{
*(HWND*)lParam = hwnd;
}
return TRUE;
}
EnumChildWindows(hHostWnd, GetCurrentHwnd, (LPARAM)&(hWebWnd));
以上代码实现了获取主窗口hHostWnd下的网页窗口。如果主窗口下含有多个网页窗口,那么枚举的时候是依次枚举的,也就是按照网页打开的顺序,晚打开的晚枚举。
0 0
- 检测窗口中打开的网页
- 网页中打开msn窗口方法
- 网页中,新打开窗口改变原来窗口的值window.open
- IE7.0 中设置选项卡中的在新的窗口中打开网页(注册表)
- 打开网页弹出窗口
- 在系统中检测指定的窗口是否已经打开,检查某进程是否存在
- 在系统中检测指定的窗口是否已经打开,检查某进程是否存在
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 在网页中使用javascript打开没有最大化、最小化和关闭按钮的窗口
- 弹出窗口中点击按钮不打开新网页设置
- js检测window.open打开的窗口是否关闭
- 打开网页的时候出现正在检测代理服…
- Delphi获取所有打开的IE窗口的网页源码
- 打开网页没有地址栏窗口
- 利用ShellExecute独立打开一个网页窗口打开我们指定的网页
- 利用ShellExecute独立打开一个网页窗口打开我们指定的网页
- js怎么样控制打开网页窗口的大小
- CUDA入门(一)
- LeetCode进阶之路(Longest Palindromic Substring)
- Android N - Data Saver
- Android:Activity 与 Fragment 通信 (99%) 完美解决方案
- Android 内存泄漏总结
- 检测窗口中打开的网页
- 一个ListView的使用
- [Android]Android SDK/NDK/Studio 官方下载地址
- Android Volley框架的使用(四)图片的三级缓存策略(内存LruCache+磁盘DiskLruCache+网络Volley)
- Mysql 主从架构之-主从配置
- 类的朋友
- Android5.0(Lollipop) 蓝牙BLE(Bluetooth Low Energy)
- 【LruCache和DiskLruCache结合】图片缓存机制
- HDU 5085 Counting problem