技术开发 频道

面对IE保护模式的开发者生存之道


二 示例应用程序和扩展插件


  本文中的示例代码包含了两个项目。第一个项目,IEEExtension,是停靠在IE窗口底部的一个条形窗口:



   第二个项目,DemoApp,是一个与上面的应用通信的EXE程序。DemoApp本身不完成太多任务,比较有趣的部分是与这个EXE程序通信的IEExtecntion。这种通信会受到IE保护模式的很大影响,这两个项目都演示了它们如何在保护模式的限制下运行,而且依然可以实现正常的互相通信。

   这个条形框中具有几个按钮来实现不同的IPC任务。这些按钮成对显示:一个不能工作在保护模式下的老技术(button 1);一个可以工作的新智能识别保护模式技术(button 2)。列表控件显示不同的状态信息,诸如从Windows APIs返回的值。

   本文中的其余部分将关注这个扩展插件需要做什么才能在保护模式正常的运行。我将介绍一些APIs,然后给出使用这些API的示例扩展插件的代码。每一部分对应条形框(band)中的一个按钮(或一对按钮),因此你可以在阅读文章的时候查看相应的代码。

三 在保护模式限制下运行

   IE 7有好几个新的API可以被扩展插件用来完成保护模式下限制的功能。这些API都在ieframe.dll中。你可以通过使用iepmapi.lib这个库来直接使用这些API,也可以在运行的时候使用LoadLibrary()/GetProcAddress()来得到这些函数的指针。如果你想让你的插件加载到Vista以前的Windows版本上,第二种方法是你必须使用的选择。

   执行提升权限操作的许多功能使用到了一个代理进程(broker process),ieuser.exe。由于IE进程运行在低完整性等级下,它不能靠自己来完成更高权限的任务;ieuser.exe担任了这个角色。你会经常在本文中和微软的文档中看到提到的这个代理进程。

0
相关文章