FAQ:控制IE的搜索栏

——谨以怀念写邮件回答网友关于Internet Explorer编程问题的青春岁月

Posted by eagleboost on September 29, 2004

本文转载自我2004年在csdn发布的博客

我想在vc中控制ie的搜索栏, 应该怎么做?

2004-09-29 01:07:57

IE的搜索栏有默认的搜索页面“http://ie.search.msn.com/{SUB_RFC1766}/srchasst/srchasst.htm”,可以指定为自己的搜索页面。

打开注册表HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Search,找到“SearchAssistant”键,其默认值为“http://ie.search.msn.com/{SUB_RFC1766}/srchasst/srchasst.htm”,是显示在IE搜索面板中的页面Url,将其修改为自己需要的搜索页面Url,如“http://www.google.com”。

HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/Search下还有一个“CustomizeSearch”键,其默认值为“http://ie.search.msn.com/{SUB_RFC1766}/srchasst/srchcust.htm”(注意与SearchAssistant不同),当在IE搜索面板上点击“自定义”按钮时,将在弹出的Html对话框中显示该页面,同样可以修改为我们希望的Url。

如果你希望使用自定义的快捷搜索方式(像3721等那样只输入一个关键字就自动去到相应的网站),IE还提供了你自定义的机会。当IE无法确认用户在地址栏输入的地址(关键字)所使用的协议(如http://等)时,它就会跟根据HKEY_LOCAL_MACHINE/Software/Microsoft/Internet Explorer/UrlSearchHooks下的Class ID创建URL Search Hook对象并调用其Translate方法来解析地址栏输入的地址(关键字)。所以我们可以写一个COM对象,实现IUrlSearchHook接口并在其Translate方法中按照你自己喜欢的方式或选择你自己喜欢的搜索引擎来搜索。