小玩意1-实时获取IE浏览器输入框URL地址
主要参考http://www.cnblogs.com/scrat/archive/2012/09/12/2682626.html
主要思路如下:
通过 FindWindow() FindWindowEx()函数获得窗口句柄,通过SendMessage获得具体值。具体函数方法请自行百度。
FindWindow这个函数检索处理顶级窗口的类名和窗口名称匹配指定的字符串。这个函数不搜索子窗口。
FindWindowEx是在窗口列表中寻找与指定条件相符的第一个子窗口 。
需要注意的地方是获得窗口的参数问题 这里是如何得到如"IEFrame","WorkerW"等的值呢?
利用工具spy++。Spy++ (SPYXX.EXE) 是一个基于 Win32 的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图。使用 Spy++ 可以执行下列操作: 显示系统对象(包括进程、线程和窗口)之间关系的图形树。 搜索指定的窗口、线程、进程或消息。 查看选定的窗口、线程、进程或消息的属性。
打开软件:
IEFrame ->WorkerW-> ReBarWindow32-> Address Band Root-> Edit
代码如下:
#include <windows.h> #include <stdio.h> #include <malloc.h> char URL[1000] = {0}; void getURL() { HWND hWnd =FindWindow("IEFrame", NULL); //获得IE窗口句柄 HWND hWnd1=FindWindowEx(hWnd, 0, "WorkerW", NULL); //获得IE窗口的工作区句柄 HWND hWnd2=FindWindowEx(hWnd1, 0, "ReBarWindow32", NULL); //获得IE窗口的菜单栏句柄 HWND hWnd3=FindWindowEx(hWnd2, 0, "Address Band Root", NULL); //获得IE窗口地址栏句柄 HWND hWnd4=FindWindowEx(hWnd3, 0, "Edit",NULL); //获得IE窗口地址栏编辑框句柄 if(hWnd4 != NULL) { int i=SendMessage(hWnd4,WM_GETTEXTLENGTH,0,0); //向IE窗口地址栏编辑框发送获取字符串长度的命令 memset(URL, 0 ,1000); SendMessage(hWnd4,WM_GETTEXT,i+1,long(URL)); //向IE窗口地址栏编辑框发送获取字符的命令 printf("%s\n",URL); return; } else { printf("Don't find IE!\n"); } return; } int main(int argc, char* argv[]) { //一个死循环,每隔一秒去取得IE当前输入框内容 while(1) { getURL(); Sleep(1000); } return 0; }
ps:代码可能还有些问题,待进一步改进。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器