Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041

Использование браузера как COM, OLE или ActiveX

28.06.2015, 17:59. Показов 4026. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здорова!

Пытаюсь браузер прикрутить в свою программу. Прочитал эту статью создал программу, но там старая версия IE7 используется и плохо JavaScript обрабатывает.

От здесь.

Как можно IE11 использовать в своих программах? Я могу как то IE11 встроить в свою программу, для этого что нужно ???

Читаю за COM OLE и Activex и ничего не разберу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.06.2015, 17:59
Ответы с готовыми решениями:

ActiveX Bridje или как превращать ActiveX Control в JavaBean.
Насколько я понял из документации, эта штука позволяет превращать JavaBean в ActiveX Control с дальнейшим использованием этого дела в...

Произошла ошибка связи в приложении с сервером "Microsoft Access" OLE или элементом управления ActiveX
Произошла ошибка связи в приложении "Microsoft Access" с сервером OLE или элементом управления ActiveX. Что делать?! Пытаюсь добавить...

OLE server or ActiveX Control
Помогите что делать если при нажатии кнопки в форме выводится следующее "The expression OnClick you entered as the event property setting...

12
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
28.06.2015, 18:52
Добавить ActiveX, унаследовать класс, написать обработчики событий.

Примерно так

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class CBrowserView : public CHtmlView
{
   protected: // create from serialization only
   CBrowserView();
   DECLARE_DYNCREATE(CBrowserView)
 
    // Operations
   public:
 
   // Overrides
   // ClassWizard generated virtual function overrides
   //{{AFX_VIRTUAL(CBrowserView)
   public:
   virtual void OnDraw(CDC* pDC);  // overridden to draw this view
   virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
   virtual void OnBeforeNavigate2(LPCTSTR lpszURL, DWORD nFlags, LPCTSTR lpszTargetFrameName, CByteArray& baPostedData, LPCTSTR lpszHeaders, BOOL* pbCancel);
   virtual void OnDocumentComplete(LPCTSTR lpszURL);
   virtual void OnDownloadBegin();
   virtual void OnDownloadComplete();
   virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
   virtual void OnDragLeave();
   virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point);
   virtual BOOL OnDrop(COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point);
   virtual void OnNavigateComplete2(LPCTSTR strURL);
   virtual void OnProgressChange(long nProgress, long nProgressMax);
   protected:
   virtual void OnInitialUpdate(); // called first time after construct
   //}}AFX_VIRTUAL
 
   // Implementation
   public:
   void Reconnect();
   virtual ~CBrowserView();
   
   #ifdef _DEBUG
   virtual void AssertValid() const;
   virtual void Dump(CDumpContext& dc) const;
   #endif
 
   protected:
 
   // Generated message map functions
   protected:
   //{{AFX_MSG(CBrowserView)
      // NOTE - the ClassWizard will add and remove member functions here.
      //    DO NOT EDIT what you see in these blocks of generated code !
   //}}AFX_MSG
   DECLARE_MESSAGE_MAP()
};
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
28.06.2015, 20:22  [ТС]
Цитата Сообщение от gazlan Посмотреть сообщение
Добавить ActiveX,
А что за ActiveX? Это типо браузер добавить?

Добавлено через 1 час 1 минуту
ActiveX - это фреймворк для определения программных компонентов приходных к использованию из программ написанных на разных языках. Мне нужно что найти фреймворк браузера IE11 ? Ничего не пойму.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
29.06.2015, 01:29
Цитата Сообщение от ninja2 Посмотреть сообщение
типа броузер добавить?
Именно. Например, добавляете control на диалог.
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
29.06.2015, 05:44  [ТС]
Цитата Сообщение от gazlan Посмотреть сообщение
Именно. Например, добавляете control на диалог.
Там есть Microsoft Web Browser <1.0> и два интерфейса IWebBrowser и IWebBrowser2 это типо оно? И мне ж вообще нужно как бы IE11, а вдруг здесь будет IE7???

Других контролов IE нету вроде
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
29.06.2015, 08:00
Оно. Будет тот, что установлен (зарегистрирован).
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
29.06.2015, 13:03  [ТС]
Цитата Сообщение от gazlan Посмотреть сообщение
Оно. Будет тот, что установлен (зарегистрирован).
Я пробовал просто создать с этого примера приложение как там есть https://msdn.microsoft.com/ru-... hy332.aspx Ну и там ИЕ7 на сайтах определяется и просят обновить браузет, хотя у меня установлен ИЕ11. И JavaScript плохо грузит, выдает ошибку, наверно потому что браузер старый ИЕ7, а не 11.

Добавлено через 6 минут


и на сайтах просят обновить браузет, так как старый ИЕ7 используется
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
29.06.2015, 16:41
Хм, много лет уже не использовал. Задумался, откуда VS тащит ActiveX. У меня это оказался (не установленный) VS NET 2003. То есть, из собственных библиотек.

Не нашел нигде у себя в коде ссылок на версию, но должна использоваться Shdocvw.dll - убедитесь, что она "достаточно новая".
Миниатюры
Использование браузера как COM, OLE или ActiveX  
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
05.08.2015, 17:55  [ТС]
gazlan, у меня похоже используется ieframe.dll как контрол наверно.


Я просто создаю диалог и добавляю туда из списка контрол

Затем добавляю переменую к диалогу к этому control и там автоматически создается класс, дальше просто методы вызываем, но оно старый браузер использует IE7
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
05.08.2015, 21:59  [ТС]
А где можно скачать последние версии ieframe.dll???

Добавлено через 3 часа 59 минут
Скачивал ieframe.dll другие версии, добавлял вместо старого, так с другим ieframe.dll вообще визуал студио незапускается исключение вылетает. и само приложение тоже. xз. как нормальный браузер подключить.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.08.2015, 03:58  [ТС]
Цитата Сообщение от gazlan Посмотреть сообщение
Shdocvw.dll
В этом файле тоже браузер сидит, там два интерфейса есть. Та их больше чем два. а в реестре у меня ieframe.dll зарегистрирован, мб. перерегистрировать хз. что делать

Добавлено через 1 минуту
Видел по С# статьи, так там все просто и страницы читает и страницы загружает, а в С++ какой то интерфейс убогий, половина функций нету. Если бы найти тот компонент который в C#, то можно его попробовать и в С++ добавить наверно.

Добавлено через 36 минут
Сгенерировал интерфейсы из Shdocvw.dll, теперь нужно знать progID этого файла чтобы с помощью функции CreateDispatch создать класс, ну там этот модуль наверно подгрузится и потом функции будут доступны. Где можно узнать progID этого файла???
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
11.08.2015, 04:39
Using OleView
Вложения
Тип файла: 7z com2va.7z (2.8 Кб, 12 просмотров)
Тип файла: 7z WebBrowser.txt.7z (2.7 Кб, 12 просмотров)
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.08.2015, 00:37  [ТС]
gazlan, Ну да там помимо тех что есть индерфейсы мы используем левые интерфейсы из mshtml.h, 3 уровня DOM, Я уже пробовал делать авторизацию с помощью браузер, все норм получается. Прототип пока сделал. Тестил основные моменты, там форму заполнить и кликнуть по кнопке. Основа норм пошла. Версия жаль ие7, не знаю как изменить, а так вроде норм. мб. дальше проблемы будут когда автоматом работать будет. хотя наврятли.

Там еще головняк когда COM используешь первым делом нужно маршалинг смотреть. Я сразу сделал прогу в двух потоках, и потом появились ошибки доступа. Оно видимо объект уничтожался в каком то потоке или хз. Короче все в основном потоке нужно делать через PeekMessage/dispatch, так 100% проблем не будет. Там смотреть нужно в реестре если free то вроде многопоточность поддерживает, а если appartment то хз. что значит. я это забыл. наверно все в одном потоке должно быть.

Добавлено через 16 минут
Цитата Сообщение от gazlan Посмотреть сообщение
Using OleView
Да смысла нету OleView юзать, я пробовал. Легче обычный regedit использовать, мы знаем название файла ieframe.dll, вводим в поиске находим CLSID, Дальше вводим CLSID и ищем progid. Тут проблема в том что нету progID для этого файла похоже. да их может пренадлежать например 5 progID и какой нам выбрать? Там может быть 10 CLSID, то есть 10 COM объектов в этом файле и какой нам выбирать? В общем по хорошему porgID на нафигг не нужен, смысла нету, лучше найти tlb и подключить файл и все будет норм работать.

Вообще porgID не нужен, я просто подключаю через #import файл ieframe.dll и у меня само автоматом создается и подключается два файла tlh и tli их просто изучаешь. Там все идентификаторы интерфейсов создаются и легко с помощью CreateControl создаем control и с помощью GetControlUnknown() получаем интерфейс IUnknown, а потом уже любой какой ходим, ну вообще нужно IWebbrowser2 или 1 получить, загрузить документ, а затем получаем другие интерфейсы для работы с DOM , файл подключаем mshtml.h и из него доступны куча интерфейсов для работы с документами, там уже что хотим то и делаем с браузером.

Мне больше нравится через #import подключать, там интерфейсы норм структурированы. а если подключить через просто через диалог вмонтировать, то в одной переменной получается все функции собраны и не понятно какую вызывать. Все функции идут вперемешку и не зная интерфейсов не ясно какая функция какому интерфейсу пренадлежить, все спутано получается.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.08.2015, 00:37
Помогаю со студенческими работами здесь

Можно ли связанный (или внедренный) OLE объект прокрутить на форме в OLE контейнере?
Динамически связанный OLE объект (документ Word) не помещяется целиком в форме. Можно ли связанный (или внедренный) OLE объект изменить или...

Как определить разрешено ли на клиенте использование ActiveX?
Вот, собственно, и суть вопроса. Имеется скрипт, работающий с объектом WScript.Network. Прежде чем начать работу, необходимо убедиться...

Использование IE как ActiveX через СWebBrowser2 MFC класс
Доброго времени суток всем. Есть приложение, построенное вокруг класса СWebBrowser2 из MFC, то есть CustomBrowser. Все замечательно...

a problem occurred while Microsoft Access was communicating with the OLE server or ActiveX Control
a problem occurred while Microsoft Access was communicating with the OLE server or ActiveX Control. помогите мне пожалувста решить эту...

Как на vbs или bat или cmd изменить размер окна браузера?
Здравствуйте. Нужен скрипт vbs для изменения уже открытого окна мазилы размером 600х800. Нашёл код 2014г. для мазилы,не работает. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru