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

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

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

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

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

От здесь.

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

Читаю за COM OLE и Activex и ничего не разберу.
0
28.06.2015, 17:59
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 2
Добавить 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  [ТС] 3
Цитата Сообщение от gazlan Посмотреть сообщение
Добавить ActiveX,
А что за ActiveX? Это типо браузер добавить?

Добавлено через 1 час 1 минуту
ActiveX - это фреймворк для определения программных компонентов приходных к использованию из программ написанных на разных языках. Мне нужно что найти фреймворк браузера IE11 ? Ничего не пойму.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
29.06.2015, 01:29 4
Цитата Сообщение от ninja2 Посмотреть сообщение
типа броузер добавить?
Именно. Например, добавляете control на диалог.
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
29.06.2015, 05:44  [ТС] 5
Цитата Сообщение от 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 6
Оно. Будет тот, что установлен (зарегистрирован).
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
29.06.2015, 13:03  [ТС] 7
Цитата Сообщение от gazlan Посмотреть сообщение
Оно. Будет тот, что установлен (зарегистрирован).
Я пробовал просто создать с этого примера приложение как там есть https://msdn.microsoft.com/ru-... hy332.aspx Ну и там ИЕ7 на сайтах определяется и просят обновить браузет, хотя у меня установлен ИЕ11. И JavaScript плохо грузит, выдает ошибку, наверно потому что браузер старый ИЕ7, а не 11.

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


и на сайтах просят обновить браузет, так как старый ИЕ7 используется
Использование браузера как COM, OLE или ActiveX
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
29.06.2015, 16:41 8
Хм, много лет уже не использовал. Задумался, откуда 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  [ТС] 9
gazlan, у меня похоже используется ieframe.dll как контрол наверно.
Использование браузера как COM, OLE или ActiveX


Я просто создаю диалог и добавляю туда из списка контрол
Использование браузера как COM, OLE или ActiveX

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

Добавлено через 3 часа 59 минут
Скачивал ieframe.dll другие версии, добавлял вместо старого, так с другим ieframe.dll вообще визуал студио незапускается исключение вылетает. и само приложение тоже. xз. как нормальный браузер подключить.
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
11.08.2015, 03:58  [ТС] 11
Цитата Сообщение от 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 12
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  [ТС] 13
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
19.08.2015, 00:37
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
Laravel или Symfony: что лучше для старта?
Wired 18.02.2025
В веб-разработке выбор правильного фреймворка может стать определяющим фактором успеха проекта. Особенно это актуально для PHP - одного из самых распространенных языков программирования, где Laravel. . .
Что нового в Laravel 12
Wired 18.02.2025
С момента своего появления в 2011 году Laravel постоянно развивается, внедряя инновационные решения и совершенствуя существующие возможности. В начале 2025 года ожидается выход Laravel 12 - новой. . .
Роутер в Laravel: как работать с маршрутами
Wired 18.02.2025
Маршрутизация - один из основополагающих элементов любого веб-приложения на Laravel, определяющий как приложение отвечает на HTTP-запросы к различным URL-адресам. По сути, роутинг - это механизм. . .
Интеграция шаблона Bootstrap в Laravel PHP
Wired 18.02.2025
Разработка веб-приложений в современном мире требует не только надежного бэкенда, но и привлекательного, отзывчивого интерфейса. Laravel, как один из самых популярных PHP-фреймворков, отлично. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru