Internet Explorer BHO检查站点的多实例

Internet Explorer BHO check for multi-instance of site

本文关键字:实例 站点 检查站 Explorer BHO 检查 Internet      更新时间:2023-10-16

我正在为客户做一个项目。我们正在建立一个内部门户网站,由于各种原因(主要是政治原因),我们最终为IE8建立了一个BHO。它所做的一件事是确保一次只能打开门户的一个实例。它通过在打开门户时写入临时文件来实现这一点。不幸的是,这并不是最优的,因为如果IE因为任何原因崩溃,那么下次启动门户时,用户就会盯着"未经授权"的消息,直到陈旧的临时文件被删除。所以我的问题是:是否有任何方式在BHO内看到多少次相同的url已加载?我的意思是,有没有办法直接从IE获取这些信息?它实际上比这更复杂,考虑到我们需要允许弹出等。但这将是一个好的开始。

感谢您的宝贵时间。

如果你想限制当前用户会话中的浏览器实例,你可以使用互斥锁而不是文件。尝试在BHO启动时(在SetSite调用中)以合理的超时获取互斥锁,并在最后的SetSite调用中再次释放。

如果结果是WAIT_OBJECT_0或WAIT_ABANDONED,则没有其他BHO实例持有互斥锁,而WAIT_ABANDONED发生在另一个线程在持有互斥锁时崩溃时。如果结果是WAIT_TIMEOUT,这个互斥锁已经被另一个BHO实例占用了,你不应该让用户根据你的要求使用你的网站。

但是如果我是一个坚定的用户,我可以启动XP模式并从那里访问网站…