基于某些原因,有些开发者希望能获取到IE浏览器(Internet Explorer)的全路径,这样就可以在二进制执行文件上加上一些选项了。
其实,并不需要这样。只需要向ShellExecute函数传递”IEXPLORE.EXE”这个参数,它就会有方法找到IE的执行文件并想办法执行它,如下图所示:
这个ShellExecute函数会负责为我们干”脏活”。另外,如果你只需要打开某个URL地址,可以像下图这样调用:
上述调用会使用用户预定义的WEB浏览器来打开这个URL地址。一般情况下应避免强制使用IE浏览器,我们在此处强制执行该操作,因为该操作可能是为了能够专门在IE浏览器中打开某些页面。
如果你还是希望自行查找路径,也是可以的。这就需要涉及一些更加高级的技术,也即:如何在系统中注册你的应用程序和路径。
在MSDN中有文档描述了一个应用程序在注册表中注册自身的信息的步骤。为了保持兼容性,你需要从注册表中读取某些内容并将它们解析成一些列的属性。
在这种情况下,系统打开IE浏览器和使用API ShellExecute是等效的,它们都会到注册表里的HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE中查询路径信息。这个注册表项的默认值为应用程序的全路径,在启动IE时,这个路径会被结合到系统环境变量中并定位IE浏览器的执行文件。
如果你真的决定这样做,要注意一点:如果注册表的值类型是REG_EXPAND_SZ,则需要调用这个函数:ExpandEnvironmentStrings。有很多开发者都会忽视这一点。
总结
我的观点还是:别瞎折腾,直接使用ShellExecute就好。简单,方便,快捷。毕竟,人生苦短。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。本文来自:《How to find the Internet Explorer binary》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。我想:你值得拥有。
评论