我正在为客户做一个项目。我们正在建立一个内部门户网站,由于各种(主要是政治)原因,最终为IE8构建了一个BHO。其中一件事是make sur,一次只能打开一个门户实例。它通过在打开门户时编写临时文件来完成此操作。不幸的是,这不是最佳的,因为IE因任何原因崩溃,然后在下次启动门户时,用户会盯着“未经授权”的消息,直到删除过时的临时文件。 所以我的问题是:在BHO中是否有任何方法可以查看同一个网址被加载了多少次?我的意思是有没有办法直接从IE获取这些信息? 考虑到我们需要允许弹出窗口等,它实际上要比这复杂一点。但这将是一个良好的开端。
感谢您的时间。
答案 0 :(得分:2)
如果要在当前用户会话中限制浏览器实例,可以使用互斥锁而不是文件。尝试在BHO启动时(在SetSite调用中)以合理的超时获取互斥锁,并在最终的SetSite调用中再次释放。
如果结果是WAIT_OBJECT_0或WAIT_ABANDONED,则没有其他BHO实例持有互斥锁,而另一个线程在持有互斥锁时崩溃则发生WAIT_ABANDONED。如果结果是WAIT_TIMEOUT,则互斥锁已被另一个BHO实例占用,您不应让用户根据您的要求使用您的网站。
但如果我是一个坚定的用户,我可以启动XP模式并从那里访问网站......