Заблокирован
![]() |
|
1 | |
СВебБраузер2 - плагин Акробата лочит файлы14.04.2013, 21:15. Показов 1969. Ответов 14
Метки нет Все метки)
(
Юзаю CWebBrowser2 ActiveX всё гуд, но есть одна проблемма, после просмотра PDF документов доступ к ним оказывается залоченным даже после смены контента CWebBrowser2. Полагаю при смене контента CWebBrowser2 на выгружает плагин акробата и в результате остаётся поток связанный с файлом, данный поток всё и коробит. Пока обхожусь тем, что просматриваемые PDF ложу копиями во %TEMP% каталог с UNIQUE NAME (в результате оригинальные файлы плагин акробата не лочит), но это не дело - т.к при большом обїёме PDF-а прошедшего через браузер папка %TEMP% раздувается в разы.
Пробовал CWebBrowser2::Stop, CWebBrowser2::Quit - не помогает - файлы остаются залоченными. Кто сталкивался помогите решить проблемму!
0
|
|
14.04.2013, 21:15 | |
Ответы с готовыми решениями:
14
Как изменятся время и дальность полета акробата как быть ???? (Вирус лочит фаервол) Вызов диалога с ожиданием реакции - мьютекс лочит UI поток Как правильно завершить поток, который лочит мьютекс в цикле? |
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
15.04.2013, 08:53 | 2 |
а если шлепнуть объект (ActiveX) после просмотра файла (для каждого просмотра создавать заново)?
0
|
Заблокирован
![]() |
||||||
15.04.2013, 14:29 [ТС] | 3 | |||||
vxg, CWebBrowser2 идёт у меня контролом окна (т.е я не создавал его динамически), хотя мысли были. Впрочем я юзал CWebBrowser2::Quit (что в принципе равносильно убийству браузера) в try{}catch() блоке - не помогает. В данный момент пробую подъюзнуть GetDocument квернуть интерфес и чего нибудь релизнуть в полученном, если не поможет буду динамически созадвать (через new CWebBrowser2()) объект и потом шлёпать.
Добавлено через 4 часа 22 минуты
0
|
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
15.04.2013, 14:46 | 4 |
0
|
Заблокирован
![]() |
|
15.04.2013, 15:44 [ТС] | 5 |
- см скрины.
Ещё раз проблемма после подгрузки PDF а в системе возникает AcroRead.exe (думаю запускается ActiveX - от адоба) с 4-мя поткоами, одновременно в приложение увеличивает число своих нитей также на 4-ри, я пробовал снимать AcroRead.exe, но при его удалении потоки приложения не пропадают а файл PDF так и сотаётся залоченным для чтения. Нубские решения - открыть в браузере пустую страницу не помогают. Думаю дело именно в контроле CWebBrowser2 который не поддерживает Quit и Release, ломаю голову как вытащить из CWebBrowser2 интерфейс IWebBrowser2
0
|
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
15.04.2013, 16:04 | 6 |
да грохнуть его (актив икс). для начала. по идее если это не поможет значит вообще швах - либо компонента некорректная (ибо деструктор все должен подтереть), либо адоб виноват либо все вместе
0
|
Заблокирован
![]() |
|
15.04.2013, 17:15 [ТС] | 7 |
- ну вот как можно грохнуть компонет(в данном случае CWebBrowser), который как эдит бокс привязан к окну? (у меня не HTMLView не IWebBrowser а именно компонент)
Либо что ты имеешь ввиду? Нельзя его грохнуть - надо высвободить контекнт. Пока грешу на адоб, т.к другие плагины нормально возвращают контент. Добавлено через 4 минуты Не по теме: Плагин качал с адоба блокировка идёт на ХРюшке и 7-ке стало быть прихожу к выводу, что в адобе недопаяли или специально так сделаи чтобы их Актив юзали, а не подгружали через другие контролы
0
|
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
16.04.2013, 09:20 | 8 |
добавляй не в дизайнере, а во время выполнения через new. в качестве владельца (или как там оно в VS) указывай себя (0 наверное) что бы можно было самому вызвать delete.
1
|
Заблокирован
![]() |
|
16.04.2013, 10:25 [ТС] | 9 |
- я понял это, но смотри если в доп окне можно такое сотворить ( даже не надо сам элемент создавать а создавать целое немодальное окно), то как быть с основным диалогом : по любому открытию PDF destoy-ить и создавать?Такой финт наверное будет заметен, хотя да по идеи должно помочь такое, но уж как-то сильно грубо, хотелось какой-то изящный диспатч если надо квер, потом релиз и всё снялось
![]()
0
|
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
16.04.2013, 14:00 | 10 |
ну да. что то вроде
актив_икс = new актив_икс; вызов диалога бла бла бла delete актив_икс; в каком смысле? пользователь не увидит динамического создания компонента. он же не визуальный? я со студией не сижу могу ошибаться. даже если визуальный - создать его невидимым. или на невидимом окне. как то так. ну а что же делать если такие рога торчат из акробата. не так уж и грубо на мой вкус. можно даже для себя обосновать минимизацией загруженных компонентов ![]() вот тут самая лирика. может и не сняться. может не в этом дело и деструктор не поможет. может адобовские потроха по какой-то другой причине заморозились.
1
|
Заблокирован
![]() |
|
16.04.2013, 14:15 [ТС] | 11 |
- пользователь увидит что контент контрола перед открытием иного файла как минимум мигнёт (как раз delete а потом new - безследно такие вещи не проходят), хотя видимо надо попоробовать так как 2-й день стою на месте
- я вот думаю костыль сварганить по снятию потоков, снап на потоки до акробата, снап после, всё что появилось - сжечь.
0
|
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
16.04.2013, 15:26 | 12 |
ууу... как бы "дом" не поджечь
![]() Добавлено через 41 секунду уж лучше грохать потоки по имени акробата. хотя и в этом случае можно убить какой-нибудь левый файл открытый пользователем параллельно
0
|
Заблокирован
![]() |
||||||
28.04.2013, 19:24 [ТС] | 13 | |||||
Решение немного напомниает костыль, зато простое
1 - й Navigate - встряхивает кеш Stop делает детач связанных с кешированным файлом потоков (вроди как отработка об этом свидетельствует) 2 - й Navigate - ну вот не хочет CWebBrowser без него отображать новый контент, думаю так 1-й навигэйт сбросил кеш, а второй подгрузил в него новый файл Refresh вконце обязательно (метод иногда генит эксептшн, потому буз try{}catch{} юзать не рекомендую!) Refresh вначале странен, но без него бывают непонятки с новым с контентом, короче для симметрии пусть будет пока что.
1
|
Модератор
3377 / 2149 / 352
Регистрация: 13.01.2012
Сообщений: 8,351
|
|
29.04.2013, 11:03 | 14 |
главное работает, но выглядит если честно как чистое шаманство... вариант с созданием нового объекта для каждого использования и его удаление после использования смотрелся бы логичнее, но если технически не судьба, то так оно видно и должно быть
0
|
Заблокирован
![]() |
||||||
29.04.2013, 11:29 [ТС] | 15 | |||||
- в том концепте проекта который использовал, пересоздавание было неприемлимо - было очень заметно момент когда главный элемент окна пересоздавался. Пришлось искать пути костылей.
По идеи должна была работать связка
![]()
1
|
29.04.2013, 11:29 | |
Помогаю со студенческими работами здесь
15
Как открыть файлы через Java плагин для серверов майнкрафт Скачать плагин для Adobe Photoshop CS4 Extended, чтобы сохряняло файлы в ico Найти все RTF файлы, захешировать эти файлы MD5 и SHA1. Потов захешированые файлы поместить в документ Пропали файлы на флешке.Вместо них файлы и папки со странными именами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |