如何获得IE5.0当前窗口中的地址
编号:QA002666
建立日期: 2000年3月2日 最后修改日期:2002年3月14日
所属类别:
linsheng:
编程工具: vc++
操作系统: win98
如何在我的应用中获得IE5.0当前窗口中的地址?
回答:
你可以先使用FindWindow获得IE的主窗口。然后使用GetWindow函数列举主窗口的子窗口,并使用GetClassName获得该子窗口的类。对于每个WorkerA类的窗口再列举它的子窗口。这个搜索过程如下:
IEFrame(IE的主窗口)->WorkerA->RebarWindow32->ComboBoxEx32->ComboBox->Edit。
得到Edit的句柄后,就可以得到其中的文字了。另外,也可以获得IShellWindowsPtr对象,来获得地址。可以参考BrowseFresh(http://www.pcmag.com/article/0,,s%3D1478&a%3D4730,00.asp)。
maorui的意见:
这样获得的地址应当是地址栏的内容,并不一定是当前页面的地址。可以考虑使用Browser Helper,可以截获ie4以上版本的所有events,并进行控制。详情还是到msdn查一下吧。
LittleMonkey问:
使用FindWindow函数需要知道IE窗口的类名和窗口名(LPCTSTR lpszClassName,LPCTSTR lpszWindowName)分别是什么?希望指点,谢谢!
回答:
两个参数,第一个是要找的窗口的类,第二个是要找的窗口的标题。在搜索的时候不一定两者都知道,但至少要知道其中的一个。对于IE主窗口的类名为IEFrame。
hwndIE = FindWindow("IEFrame", NULL);
hwndWorker = FindWindowEx(hwndIE, 0, "WorkerA", NULL);
hwndToolbar = FindWindowEx(hwndWorker, 0, "rebarwindow32", NULL);
hwndComboboxex = FindWindowEx(hwndToolbar, 0, "comboboxex32", NULL);
hwndCombo = FindWindowEx(hwndComboboxex,0,"ComboBox", NULL);
hwndEdit = FindWindowEx(hwndCombo,0, "Edit", NULL);
SendMessage (hwndEdit, WM_GETTEXT, 255, buffer);
irose的意见:
你可以使用DDE(动态数据交换)建立程序与IE的连接,可以实时获得当前IE的URL。
关于DDE连接,可以利用下面方法:
首先利用
UINT DdeInitialize(
LPDWORD pidInst, // pointer to instance identifier
PFNCALLBACK pfnCallback, // pointer to callback function
DWORD afCmd, // set of command and filter flags
DWORD ulRes // reserved
)
初使化DDE连接,然后利用
HCONV hConV=DdeConnect(dwDDEInst,hszService,hszTopic,NULL)
建立连接,其中
HSZ hszService=DdeCreateStringHandle(dwDDEInst,_T("iexplore"),CP_WINANSI)
HSZ hszTopic=DdeCreateStringHandle(dwDDEInst,_T("WWW_RegisterURLEcho"),CP_WINANSI)
最后利用
DdeFreeStringHandle(dwDDEInst,hszService)
DdeFreeStringHandle(dwDDEInst,hszTopic)
释放连接
新手之见,若有不对,还请指教。
相关问题:
QA004265 "如何在自己的应用程序中获取当前运行的浏览器中的URL"
QA000251 "如何利用FindWindow()函数查找程序"
此问题由李海回答。
| |
|
|
| |
|
|