热情软件屋

 

如何获得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()函数查找程序"

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio