Я разрабатываю объект Browser Helper Object (BHO) для Internet Explorer, написанный на C #.Я использую событие BeforeNavigate
, чтобы получить вызываемый URL и сохранить его в локальной переменной.Для каждой вкладки создается новый экземпляр BHO.Это означает, что каждая вкладка имеет свой собственный BHO, который, в свою очередь, имеет свои локальные переменные.Я проверил это, отобразив MessageBox с предыдущим вызванным URL-адресом (значением локальной переменной) перед тем, как он будет перезаписан новым URL-адресом.
string myUrl = "";
void BeforeNavigate( string URL, ... )
{
System.Windows.Forms.MessageBox.Show( myUrl );
myUrl = URL.ToString();
}
Но в некоторых случаях локальная переменная пуста, хотяURL был вызван раньше.Я исследовал настройки IE и выяснил, что это вызвано защитой IE от повышения уровня зоны.Для зон local intranet
и trusted sites
защищенный режим отключен, в то время как он включен для зон internet
и restricted sites
.
Например, когда вызывается intranet.com
и затем internet.com
вна той же вкладке я ожидаю, что MessageBox отображает intranet.com
при вызове internet.com
.Но вместо этого отображается пустая строка.Я предполагаю, что вызов internet.com
активирует защищенный режим для этой вкладки, которая порождает новый экземпляр BHO.MessageBox теперь будет отображать значение переменной нового экземпляра BHO.Значение переменной старого BHO теряется.
Если защищенный режим включен для зон local intranet
и trusted sites
, BHO ведет себя правильно.Я предполагаю, что защищенный режим отключен в этих зонах по причинам совместимости.В интрасети могут существовать сайты, которые не работают в защищенном режиме.Таким образом, я ищу решение, которое работает с защищенным режимом, отключенным для этих зон.
Поскольку IE управляет загрузкой BHO, я сомневаюсь, что эту проблему можно решить из BHO.
Кто-нибудь имеет более глубокие знания по этой теме, чтобы подтвердить мои предположения?
Можно ли сохранить значение переменной с отключенным защищенным режимом для зон local intranet
и trusted sites
?
Любая помощьбудет оценено, спасибо!