|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.08.2015, 14:42 | #1 |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
0xC0000005: Нарушение прав доступа при чтении "0x00000088"
Есть код:
Код:
if(pElem->get_innerHTML(&s)==S_OK) Необработанное исключение в "0x5d12a956" в "test_webbrowser222.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000088". И что я не так делаю???? Как это исправить? |
17.08.2015, 16:35 | #2 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Похоже, что get_documentElement возвращает пустой pElem.
Судя по всему, страница еще не загрузилась. |
17.08.2015, 20:37 | #3 | |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
Цитата:
Код:
Последний раз редактировалось ninja2; 17.08.2015 в 20:39. |
|
17.08.2015, 20:41 | #4 |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
Оно от только что я нажал на кнопку нормально загрузило все, если второй раз нажму на кнопку может не загрузить, а бывает с первого раза не загружает. хз. что за дела.
|
17.08.2015, 20:42 | #5 |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
Я кажется догадываюсь мб. у меня одновременно два потока работает и в одном загрузило, а во вротом подгружает только и оно сбивается? Да это я уже наверно выдумываю. хз. Если бы с потоками были проблемы то оно бы не вылетало на первой загрузке, а так от только перекомпелировал кликнул по кнопке и вылетело на первой загрузке.
я потоки не сильно знаю, просто их вызываю и все, а ниче не проверяю. мб. их как то уничтожать нада? у меня в коде получается два потока одновременно используют одну и туже переменную m_brows, Один вызывает из одного потока вызывается поток который вызывает Navigate, а потом через 3 секунды чтобы успел вызваться Navigate идет проверка readyState и два потока одновременно обращаются к одной переменной m_brows мб. из за этого ошибка? хз. Последний раз редактировалось ninja2; 17.08.2015 в 20:57. |
17.08.2015, 21:11 | #6 |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
Вот код я в одном потоке использую и он все рамно вылетает если строчку раскоментировать
Код:
|
17.08.2015, 21:59 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Navigate, get_ReadyStatus и все осталные методы следует вызывать *только* из потока, который создал WebBrowser объект.
Sleep блокирует программу - пока поток спит browser объект данные *не качает*. Для работы WebBrowser объекта нужна обработка очереди сообщений GetMessage / DispatchMessage. |
17.08.2015, 22:23 | #8 | |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
Цитата:
что Sleep полностью блокирует? я думал он цикл заблокировал (поток в котором цикл), а поток в котором вызвана функция Navigate работает. А что такое очередь сообщений GetMessage / DispatchMessage????? Это нужно самому генерировать свои собственные сообщения? От к примеру при нажатии на кнопку я генерирую сообщение WM_MY_MESSAGE которая вызывает обработчик - функцию. по идее окно с кнопками уже не зависнет. Дальше я в этом обработчике вызываю еще одно свое собственное сообщение в функции которой будет вызвана Navigate, а в этом же обработчике буду проверять ReadyState. В таком стиле.Просто все в одном диалоговом классе все делать. Посыл своих собственных сообщений и отлов это называется GetMessage/DispatchMessage????? Еще нормального ни одного приложения на MFC не сделал. Можно вроде таймеры использовать. Да кстати Sleep работает, я от вспомнил он останавливает только один поток, а другой поток в котором была вызвана Navigate он продолжал подгружать страницу. Потому что если без Sleep у меня не успевал поток в котором вызыван Navigate изменить readyState и у меня показывало что сразу документ загружен и я не мог получить указатель на документ. Так что Sleep только останавливает тот поток в котором вызван. Последний раз редактировалось ninja2; 17.08.2015 в 22:28. |
|
17.08.2015, 22:43 | #9 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Ваш (последний) пример содержал и Navigate и get_ReadyState в одном потоке в перемежку со Sleep. В этом случае Sleep блокирует работу WebBrowser объекта.
https://en.wikipedia.org/wiki/Messag...rosoft_Windows |
17.08.2015, 22:47 | #10 | |
Форумчанин
Регистрация: 13.08.2015
Сообщений: 193
|
Цитата:
С GetMessage / DispatchMessage похоже сложно будет разобраться ))) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Mutex нарушение прав доступа при чтении по адресу | Eugenelife | Помощь студентам | 0 | 15.12.2013 13:13 |
c++ нарушение прав доступа при чтении по адресу 0x00000000 | proef | Помощь студентам | 7 | 05.09.2013 23:49 |
Нарушение прав доступа при чтении | Павел Гайдаржи | Помощь студентам | 0 | 11.11.2012 19:45 |
Нарушение прав доступа при чтении попытка вторая | Farrel | Общие вопросы C/C++ | 5 | 24.02.2011 12:01 |
нарушение прав доступа при чтении | Farrel | Общие вопросы C/C++ | 1 | 22.02.2011 00:32 |