Internet Explorer BHO проверяет наличие нескольких экземпляров сайта - PullRequest
0 голосов
/ 20 апреля 2011

Я работаю над проектом для клиента. Мы строим внутренний веб-портал, и по разным (в основном политическим) причинам закончили создание BHO для IE8. Одна из вещей, которую нужно сделать, - сделать так, чтобы за один раз можно было открыть только один экземпляр портала. Это делается путем записи временного файла при открытии портала. К сожалению, это не оптимально, так как если по какой-либо причине IE аварийно завершает работу, то при следующем запуске портала пользователь будет смотреть «неавторизованное» сообщение, пока устаревший временный файл не будет удален. Итак, мой вопрос: есть ли способ в BHO увидеть, сколько раз был загружен один и тот же URL? Я имею в виду, есть ли способ получить эту информацию непосредственно из IE? На самом деле все немного сложнее, учитывая, что нам нужно разрешить всплывающие окна и т. Д. Но это было бы хорошим началом.

Спасибо за ваше время.

1 Ответ

2 голосов
/ 20 апреля 2011

Если вы хотите ограничить количество экземпляров браузера в текущем сеансе пользователя, вы можете использовать мьютекс вместо файла. попробуйте получить мьютекс при запуске BHO (в вызове SetSite) с разумным временем ожидания и снова отпустите в последнем вызове SetSite.

Если результатом является WAIT_OBJECT_0 или WAIT_ABANDONED, другого экземпляра BHO, содержащего мьютекс, не существует, тогда как WAIT_ABANDONED возникает, когда другой поток завершает работу, удерживая мьютекс. Если результатом является WAIT_TIMEOUT, мьютекс уже занят другим экземпляром BHO, и вы не должны позволять пользователю использовать ваш веб-сайт в соответствии с вашими требованиями.

Но если я настроенный пользователь, я могу запустить XP Mode и получить доступ к веб-сайту оттуда ...

...