Написание Plugin'ов для Internet Explorer - II
От: Гулай Борис aka BoresExpress Россия  
Дата: 23.09.02 11:20
Оценка: 135 (5) +1 -1
Статья:
Написание Plugin'ов для Internet Explorer -II
Автор(ы): Гулай Борис aka BoresExpress
Дата: 10.09.2002


Авторы:
Гулай Борис aka BoresExpress

Аннотация:
После публикации первой части статьи (см. «Программист» №1/2002) мне пришло много писем примерно следующего содержания: «Плагины – это здорово, пункт в меню – это хорошо, но нам нужен интерактив!» Поскольку «интерактив» подразумевает наличие окна на экране, то вопрос сводился к созданию так называемых Explorer Bars (или Панелей Обозревателя в русской версии IE). Полюбоваться на такую панель вы можете, выбрав какой-нибудь пункт в меню Вид > Панели обозревателя или нажав, например, Ctrl+E или Ctrl+H.

Чтобы не отвечать каждому по отдельности и в то же время как можно подробнее ответить на вопрос, я решил посвятить созданию панелей обозревателя отдельную статью.
popupMenu
От: null  
Дата: 23.04.03 02:30
Оценка:
Создал ToolBar для IE, все работает но попап меню по нажатию кнопки на ToolBar не показывается если открыть новое окно (Open Link in New Window). В чем проблема не могу понять :(
Уважаемий Борис, возможно ли
От: zaza7  
Дата: 16.01.03 15:09
Оценка:
мне очень понравился ваша статья.
Вопрос:
можно ли проделать тоже самое в среде
.NET с использованием например C#.
если да то каким образом?(в обших чертах)
заранее благодарю.
Не обновляется страница:((((
От: null  
Дата: 10.10.02 19:49
Оценка:
В начале статьи говорилось про интеректив, Я немножко изменил данный код. Всё что он делает это эмулирует нажатие на линки, кнопки и т.д. и т.п. Допустим эмулирую нажатие на линк, эмулировать эмулирует, но страница не грузится:( Ньюанс...Она грузится если выдать месаджбокс... Почему она не обновляется??????? Плиз хелп!!!
А как создавать "Панели инструментов"?
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 24.09.02 11:20
Оценка:
Сперва хочу поблагодарить Вас за ваши статьи. Огромное Вам за них спасибо. Интересует еще такая вещь, как создавать "Панели инструментов"? Т.е. какие интерфейсы должны быть реализованы, как регистрировать и вообще какие отличия? Буду Вам очень признателен если Вы найдете возможность ответить мне на мой вопрос.

Nick_K@ukrpost.net
Re: Уважаемий Борис, возможно ли
От: BoresExpress Россия  
Дата: 16.01.03 16:49
Оценка:
Я не большой знаток C#, поэтому точно ответить на вопрос я не могу. Имортировать в C# COM-объекты можно. А вот можно ли сделать из .NET-сборки COM-объект я не знаю. Если да, то повторить эксперементы, описанные в этой статье, на C# будет можно.
Re: А как создавать
От: BoresExpress Россия  
Дата: 24.09.02 19:00
Оценка:
Реализация — точь в точь как для панелей обозревателя (т.е. реализуем IDeskBand, IObjectWithSite и по желанию IPersistStream). Отличия в регистрации.
Сначала, естественно, регистрим плагин как COM-сервер. А затем добавляем ключ
HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Toolbar \<Ваш GUID>=НазваниеПанели
И всё. Надеюсь, что понятно объяснил.
Re: Уважаемий Борис, возможно ли
От: zaza7  
Дата: 22.01.03 08:50
Оценка:
COM объекти можно создавать под .NET но они не прописиваются
в реестре и не имеют никакой GUID они просто находятся в специальном папке "BIN" и отсюда вывод IE их не увидит.
кроме того в .NET я не обнаружил аналогичные интерфейси для
работы с IE (ввыде plugin-а).

Вопрос:
Можно ли каким то другим образом организовать активизацию
кода при запуске IE?
Re: А как создавать
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 02.10.02 12:52
Оценка:
Помогите мне пожалуйста разобраться.
Создаю я панель инструментов. Все ок. Но вот в чем проблема. Существует такая возможность в ИЕ кинуть картинку на фон панелей инструментов. Так вот на созданной мною панели этот фон не отображается. Подскажите пожалуйста как это исправить?
Re: А как создавать
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 26.09.02 08:53
Оценка:
И еще. Может Вы уже гдето печатали статью про создание "Панелей инструментов" и там есть пример?
Re: А как создавать
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 26.09.02 08:52
Оценка:
Спасибо, теперь появляется панель инструментов.
Если можно, то ответьте пожалуйста еще на один вопрос.
Как я понял, вначале создается окно (CreateOurWindow). Тут я чтолкнулся с тем, что это окно (панель) слишком высокая. Причем при изменении высоты к примеру на значение 25 (m_hOurWindow=CreateWindow(_myWndClass, NULL, WS_CHILD, 0, 0, 0, 25, hParent, NULL, g_hThisModule, this)) ничего не происходит, а если его выставить к примеру 400 то панель увеличится. Подскажите пожалуйста в чем здесь дело?
Re: А как создавать
От: BoresExpress Россия  
Дата: 02.10.02 17:10
Оценка:
Для того, чтобы установить фон панельки нужно использовать RB_SETBANDINFO (iImage или hbrBack).
Для того, чтобы получить картинку, можно использовать или RB_GETBARONFO (попросив заполнить himl; это для iImage) или RB_GETBANDINFO (попросив заполнить hbrBack).
Короче, надо спросить картинку у ReBar или у другой Band и установить её для своей Band.
Re: А как создавать
От: BoresExpress Россия  
Дата: 26.09.02 12:34
Оценка:
Нет, такую статью я нигде не печатал.
Re: А как создавать
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 26.09.02 09:11
Оценка:
Прошу прощения за глупый вопрос. А виной всему невнимательность. Вопрос снимается. Все прописанно в GetBandInfo.
Re: А как создавать
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 03.10.02 12:29
Оценка:
я пробовал так, но ничего не вышло
//в IMyIEExtention::CreateOurWindow(HWND hParent)
//присвоил m_hOurWindowParent=hParent
UINT nCount = SendMessage(m_hOurWindowParent, RB_GETBANDCOUNT, 0, 0); //
//у меня nCount=6

REBARBANDINFO info;

info.cbSize = sizeof(info);
info.fMask = RBBIM_STYLE | RBBIM_CHILD | RBBIM_BACKGROUND;
if ((BOOL)SendMessage(m_hOurWindowParent, RB_GETBANDINFO, 4, (LPARAM)&info)) {
info.cbSize = sizeof(info);
info.fMask = RBBIM_BACKGROUND | RBBIM_STYLE;
info.fStyle |= RBBS_FIXEDBMP;

SendMessage(hwndToolBar, RB_SETBARINFO, 0, (LPARAM)&info);
}
Re: А как создавать
От: Николай Козлов Украина http://www.nickolya.wallst.ru
Дата: 03.10.02 07:23
Оценка:
А Вы не могли бы подсказать мне как именно можно попросить у какого нибудь Band в ИЕ? Сам я этого незнаю, а поиск по RSDN почемуто не работает уже второй день.
Заранее благодарен.
Re: А как создавать
От: Vladik1979  
Дата: 14.11.02 11:18
Оценка:
В MSDN есть статья на эту тему, там же и исходники примера.
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/1199/bandobj/bandobj.htm&amp;nav=/msj/1199/newnav.htm
http://www.microsoft.com/msj/defaultframe.asp?page=/msj/1299/comtoys/comtoys.htm&amp;nav=/msj/1299/newnav.htm
Re: Написание Plugin'ов для Internet Explorer - II
От: Аноним  
Дата: 17.03.04 03:08
Оценка:
Здравствуйте Борис !
С большим удовольствием прочел Ваши статьи: Написание
Plugin'ов для Internet Explorer, часть первая и часть
вторая. Возник один едиственный вопрос: Какую имплементацию
на уровне кода необходимо написать в функции
IOleCommandTarget::Exec, что бы при нажатии на
кнопку(имеется ввиду toolbar Internet Explorer(a) из первой
статьи ) поднималась боковая вертикальная панель(IDeskBand)
Internet Explorer(а)(имеется ввиду статья номер два ).
Вопрос совсем не праздный, очень интересно программное
решение. Буду признателен за любую помощь. Ростислав.
Re[2]: Уважаемий Борис, возможно ли
От: Plutonia Experiment Беларусь http://blogs.rsdn.org/ikemefula
Дата: 17.03.04 08:51
Оценка:
Здравствуйте, zaza7, Вы писали:

Z>COM объекти можно создавать под .NET но они не прописиваются

Z>в реестре и не имеют никакой GUID они просто находятся в специальном папке "BIN" и отсюда вывод IE их не увидит.

Все сильно. Сборку нужно оформить нужным образом.

1. Прописываем все ГУИДЫ в виде атрибутов на сбсорку, классы, интерфейсы
2. Подписываем сборку
3. Регистрируем с помощью regasm /tlb /codebase

Z>кроме того в .NET я не обнаружил аналогичные интерфейси для

Z>работы с IE (ввыде plugin-а).

Нужно попробовать импортнуть TLB, в котором описаны все неоходимые интерфейсы. Если шарп их подымет — круто.
У меня вопрос только на счет IObjectWithSite.

Z>Можно ли каким то другим образом организовать активизацию

Z>кода при запуске IE?

BHO
Re: Написание Plugin'ов для Internet Explorer - II
От: Adopt  
Дата: 21.09.05 04:09
Оценка:
Здравствуйте, Гулай Борис aka BoresExpress, Вы писали:

Каким образом можно узнать что пользователь авторизируется,
то есть какое событие отвечает за вход в защищенные области...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.