我正在尝试让我的IE BHO在Win8 (IE10和IE11预览版)上工作,同时打开EPM。我已经从MS (http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx)找到了一些关于这个主题的文章,但它们仍然没有提供如何实现这一点的实际示例。我已经编译了32位和64位的BHO,添加了文章中提到的类别(CATID_AppContainerCompatible),但我仍然没有从IE获得任何web浏览器事件。有没有人能举出一个更详细的例子来说明如何做到这一点?
下面是我的rgs文件的样子:
HKCR
{
TestBHO.TestScript.1 = s 'TestScript Class'
{
CLSID = s '{051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09}'
}
TestBHO.TestScript = s 'TestScript Class'
{
CLSID = s '{051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09}'
CurVer = s 'TestBHO.TestScript.1'
}
NoRemove CLSID
{
ForceRemove {051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09} = s 'TestScript Class'
{
ProgID = s 'TestBHO.TestScript.1'
VersionIndependentProgID = s 'TestBHO.TestScript'
ForceRemove 'Programmable'
InprocServer32 = s '%MODULE%'
{
val ThreadingModel = s 'Apartment'
}
'TypeLib' = s '{2D9CE0FA-2040-4A24-807E-0C0BF4E9ECE7}'
'Implemented Categories' = s ''
{
{59fb2056-d625-48d0-a944-1a85b5ab2640} = s ''
{
}
}
}
}
}请注意,在IE的管理加载项页面中,我看到我的BHO已启用,并且支持32位和64位,但DLL甚至没有加载。
发布于 2013-07-12 11:19:11
DEFINE_GUID调用只是在您的代码中定义了GUID值常量,它实际上并没有向COM组件类别(存储在注册表中)注册您的对象。
请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms692551(v=vs.85).aspx和http://msdn.microsoft.com/en-us/library/windows/desktop/ms694322(v=vs.85).aspx
您可以使用OLEView工具查看哪些对象已注册到各种类别中。
此外,请确保将BHO的DLL放在AppContainer可读文件夹中(例如,\Program Files\文件夹的子文件夹)。如果失败,则在增强保护模式下IE实例将不会加载您的DLL。
https://stackoverflow.com/questions/17570827
复制相似问题