请问如何获得IE的窗口过程啊?其它窗口可以,但IE无法获得? 请问如何获得IE的窗口过程啊?其它窗口可以,但IE无法获得? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 仅供参考网络编程让应用程序从IE中获取键入的网址 转自:www.csdn.net 文章正文 前些时候,朋友想做一个小共享软件,软件的主要作用是阻止用户进入某些网站,他的设想是从IE的地址栏中获取键入的网址,如果这个网址非法的话,则不可以进入,代码如下: HWND hwnd=::FindWindow(_T("IEFrame"),NULL); if(hwnd) { HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("Edit"),NULL); char sz[255]; ::SendMessage(hwnd2,WM_GETTEXT,255,(LPARAM)sz); AfxMessageBox(sz); }结果发现不能得到正确的结果,从SPY上看,类名也全部是正确的,为什么不能得到正确的结果呢?看了他的代码后,我进行了如下改动,就可以得到正确的结果了:HWND hwnd=::FindWindow(_T("IEFrame"),NULL); if(hwnd) { HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("WorkerW"),NULL); HWND hwnd3=::FindWindowEx(hwnd2,NULL,_T("ReBarWindow32"),NULL); HWND hwnd4=::FindWindowEx(hwnd3,NULL,_T("ComboBoxEx32"),NULL); HWND hwnd5=::FindWindowEx(hwnd4,NULL,_T("ComboBox"),NULL); HWND hwnd6=::FindWindowEx(hwnd5,NULL,_T("Edit"),NULL); char sz[255]; ::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz); AfxMessageBox(sz); }} 以上的代码不用我解释了吧,这个问题不是什么大问题,难度也不大,但是可能会让初学者不明白为什么得不到程序某一控件的HANDLE,其实对VC来说,没有什么办不到的事情,只是需要你仔细的分析一下而已 谢谢,不过你上面的功能已经实现了,我想问的是如何设置IE的窗口过程,也就是说我想用我的窗口过程替换IE的窗口过程以得到消息(如果用钩子的话我觉得太耗资源了没必要,因为我只关心IE的窗口消息) VC程序反汇编,局部变量的地址都是ebp指定的。这个是Intel汇编规定的还是编译器规定的? 界面控件 多线程 如何让控件随窗口下边缘移动 请问:在VC程序中如何获得IE窗口中控件的内容 关于做小游戏保存的功能 在treectrl的click事件中,执行GetSelectedItem,得到的都是上次选中的Item? 学mfc该看哪本书啊? 赶超印度应是中国软件业发展方向吗? vc怎么打包 哪位仁兄给推荐一本比较比的讲述 DLL 的书?最好易懂。全面一些 在MFC中出现如图问题,什么原因? 如何让CEdit编辑框响应鼠标双击事件?
让应用程序从IE中获取键入的网址
转自:www.csdn.net
文章正文
前些时候,朋友想做一个小共享软件,软件的主要作用是阻止用户进入某些网站,他的设想是从IE的地址栏中获取键入的网址,如果这个网址非法的话,则不可以进入,代码如下: HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
if(hwnd)
{
HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("Edit"),NULL);
char sz[255];
::SendMessage(hwnd2,WM_GETTEXT,255,(LPARAM)sz);
AfxMessageBox(sz);
}结果发现不能得到正确的结果,从SPY上看,类名也全部是正确的,为什么不能得到正确的结果呢?看了他的代码后,我进行了如下改动,就可以得到正确的结果了:HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
if(hwnd)
{
HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("WorkerW"),NULL);
HWND hwnd3=::FindWindowEx(hwnd2,NULL,_T("ReBarWindow32"),NULL);
HWND hwnd4=::FindWindowEx(hwnd3,NULL,_T("ComboBoxEx32"),NULL);
HWND hwnd5=::FindWindowEx(hwnd4,NULL,_T("ComboBox"),NULL);
HWND hwnd6=::FindWindowEx(hwnd5,NULL,_T("Edit"),NULL); char sz[255];
::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz);
AfxMessageBox(sz);
}
} 以上的代码不用我解释了吧,这个问题不是什么大问题,难度也不大,但是可能会让初学者不明白为什么得不到程序某一控件的HANDLE,其实对VC来说,没有什么办不到的事情,只是需要你仔细的分析一下而已