|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Имеем скрипт: Код: sql 1.
В объекте ole_1 делаются какие-то телодвижения и на выходе создается файл PDF (ls_outputPDF) Это занимает пару секунд. Дальше нам нужно с этим файлом что-то делать. Вопрос: как узнать, что файл готов? ole_1.Object.Navigate2 работает асинхронно. Если добавить такое: Код: sql 1. 2. 3. 4. 5. 6.
то ole_1.Object.Navigate2 закончится только после завершения цикла. Yield() решает эту проблему, но использовать его нельзя по другим причинам. Короче, как запустить ole_1.Object.Navigate2 синхронно? Или как асинхронно, но дождаться завершения БЕЗ использования Yield()? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2020, 13:06 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Riska, не совсем понятно: файл готов на сервере и ждет команды к отправке, или файл уже получен на клиенте и может быть уже использоваться? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2020, 22:02 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Может просто вывести этот файл в отдельное окно и пусть пользователь далее делает с ним что ему угодно? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2020, 22:05 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Про PowerBuilder не знаю, в нем с OLE не работал. Но в IE 100% есть дофига колбеков на все случае жизни Даже лезть в документацию и искать за автора - влом. Т.к. все описано и все на виду Сложнее в том случае, если среда не позволяет отлавливать OLE Event'ы (Power Builder скорее всего умеет). Но тогда явно можно написать ф-цию на Java Script, которая будет выполняться синхронно. IMHO RTFM https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.webbrowser?view=netframework-4.8 https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.webbrowser.documentcompleted?view=netframework-4.8 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 00:11 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Microsoft WebBrowser по возможностям не имеет того что имеет IE, это так к слову... ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 11:19 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
AIS Leonid Kudryavtsev, Microsoft WebBrowser по возможностям не имеет того что имеет IE, это так к слову... Что он там не имеет - мне не ведомо (и в каких версиях, в каких Windows). Ссылку на доку я написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2020, 13:15 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev AIS Leonid Kudryavtsev, Microsoft WebBrowser по возможностям не имеет того что имеет IE, это так к слову... Что он там не имеет - мне не ведомо (и в каких версиях, в каких Windows). Ссылку на доку я написал. И что это было - ссылка на доки где нет ответа? а конкретнее по PDF файлу и собственно по проблеме топика что посоветуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 00:34 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Объясняю подробно. Отправляем ссылку в ОЛЕ. Там в событии documentcomplete создается файл PDF. Т.е. как только в каком-то месте скрипта (на кнопке) запускается Код: sql 1.
ОЛЕ начинает работать, а скрипт (на кнопке) продолжает работать асинхронно. Перенести оставшийся скрипт с кнопки в ОЛЕ нельзя. Если Javoj что-то сделать в ОЛЕ, то проблема останется. Нужно именно на кнопке выяснить, когда ОЛЕ завершил работу. Код: sql 1. 2.
Именно между этими двумя строчками проблема. Есть ли возможность запустить ole_1.Object.Navigate2(ls_path) синхронно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 12:08 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Riska Есть ли возможность запустить ole_1.Object.Navigate2(ls_path) синхронно? Сомневаюсь 1) никто не мешает запустить ДРУГОЙ код, который будет контролировать "асинхронный" IE / WebBrowser но сам при этом, с точки зрения PB, работать синхронно. 2) код на кнопке побить на 2 (или более) части 2.1. ДО асинхронного вызова 2.2. Код после асинхронного вызова 2.3. + обработка ошибок Первый отрабатывает по нажатию на кнопку Второй при приходе DocumentCompleted Т.к. подозреваю, что DocumentCompleted может и не приходить, то нужно вешаться еще на Callback'и/Event'ы которые вызываются при ошибках Реальная задача в топике НЕ описана. Т.к., есть подозрение, что PDF банально готовится на стороне сервера и задача значительно более простая. Взять файл с URL и сохранить его на диске. Можно найти 100500 решений данной задачи без WebBrowser (например Linux'овый curl) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 17:41 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev ...Реальная задача в топике НЕ описана... Тоже соглашусь. Например, где находится эта кнопка: в окне РВ или на странице в WebBrowser? Начинать "копать" надо с событий WebBrowser и его флагов состояния, как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2020, 23:25 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Конкретная задача. Вы открываете в IE https://www.sql.ru/forum/1323683/kak-zastavit-rabotat-microsoft-webbrowser-sinhronno То, что видите, нужно сохранить в формате ПДФ на компе. Это задача. Имеем решение: отправляем линк в ОЛЕ. После загрузки страницы начинаем строить PDF. Все делается на клиенте (кнопка в окне РВ). documentcomplete срабатывает сразу, как только страница загружена, НО pdf еще не готов. Поэтому решение Первый отрабатывает по нажатию на кнопку Второй при приходе DocumentCompleted не подходит. Плюс, как я уже сказал, переносить скрипт "после Navigate..." из кнопки нельзя. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2020, 13:13 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Лично мне, стало еще более НЕ понятно. Riska Имеем решение: отправляем линк в ОЛЕ. "Сферичный" OLE никаких PDF не умеет. И вообще, это две разные вещи ничего общего между собой не имеющие. OLE = Microsoft NASDAQ: MSFT 146,92 USD PDF = Adobe NASDAQ: ADBE 305,91 USD (цены на акции по гугле на 26.03.2020) Riska начинаем строить PDF..., НО pdf еще не готов. И при чем тут Microsoft WebBrowser и Navigate2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2020, 14:27 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Если в PDF сохраняете через Document.execCommand IDM_SAVEAS то так и напишите (желательно все же с куском кода) или как-то иначе? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2020, 14:36 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Как-то иначе. Код слишком большой. Вопрос не в этом. ole_1.Object.Navigate2( https://www.sql.ru/forum/1323683/kak-zastavit-rabotat-microsoft-webbrowser-sinhronno) Это работает. Создается файл PDF. Скрипт по созданию PDF написан в событии documentcomplete. Код на кнопке: Код: sql 1. 2.
Нужно дать MessageBox('URA', 'Fail gotov!') ПОСЛЕ того, как файл готов. Перенести MessageBox в documentcomplete нельза! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2020, 17:55 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Riska Скрипт по созданию PDF написан в событии documentcomplete. под скриптом Вы понимаете: 1. PowerBuilder в событие documentcomplete от WebBrowser 2. JavaScript на странице в событие onLoad или каком-то другом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.03.2020, 18:16 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Riska, а если вместо сообщения о готовности файла просто запустить его используя ShellExecuteEx и WaitForSingleObject, и уже в случае неудачи показать сообщение об ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2020, 09:57 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, под скриптом Вы понимаете: 1. PowerBuilder в событие documentcomplete от WebBrowser 2. JavaScript на странице в событие onLoad или каком-то другом ? Код: sql 1. 2. 3.
Отличный анекдот в тему: Идет мужик по улице смотрит новый магазин. Дай думает зайду. Заходит его сразу же встречает улыбающийся продавец и говорит: Здравствуйте мы очень Вам рады чтобы Вы хотели приобрести? Мужик подумал и говорит: - Ну перчатки нужны. - Пройдите пожалуйста в тот отдел. Мужик подходит: - Здравствуйте мне нужны перчатки. Ему в ответ: - Вам какие летние или зимние? М: Зимние П: Тогда пройдите в вон тот отдел. М. пошел спрашивает в очередном отделе: Здравствуйте мне нужны перчатки. П: Вам кожаные или нет? М: Кожаные. П: Тогда Вам в вон тот отдел. М: не понял но ладно пошел. Здравствуйте мне нужны Зимние кожаные перчатки. П: Вам с натуральным мехом или нет? М.: С натуральным конечно. П: Вам надо в отдел напротив. М. напрягается но молча идет. В новом отделе с повышенным голосом говорит: Мне нужны перчатки ЗИМНИЕ КОЖАНЫЕ С НАТУРАЛЬНЫМ МЕХОМ. П: Вам с застежкой или без? М: С застежкой! П: Вытяните руку растопырьте пальчики. М: пожалуйста. П: Вам надо в соседний отдел. М. гневно: что это такое Вы что надо мной издеваетесь?! Дайте мне перчатки и я уйду. П: Не волнуйтесь мы просто хотим продать Вам именно то что Вы хотите чтобы Вы получили максимум удовольствия от покупки. Вы перчатки подбираете под это пальто? М. в раздражении: Да! и идет дальше по отделам. Подходит к следующему продавцу и с надрывом: - Мне нужные зимние кожаные с натуральным мехом и застежкой на эти руки к этому пальто перчатки!!! П: Вам застежка нужна на кнопочке или молния? М (на грани истерики): На кнопочке!!! П: Вам надо вон к тому продавцу. В этот момент распахиваются входные двери в магазин заходит мужик который держит на вытянутых руках вырванный с корнем унитаз по краям которого осталась еще плитка. Подходит к прилавку и кричит: Вот такой у меня унитаз вот такая плитка жопу я вам вчера показывал дайте мне наконец туалетную бумагу!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2020, 09:40 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Дайте мне наконец код, который запускает WebBrowser синхронно!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2020, 09:44 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
AIS, а если вместо сообщения о готовности файла просто запустить его используя ShellExecuteEx Мне не надо ничего запускать. Нужно просто узнать, когда файл уже готов. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2020, 09:56 |
|
Как заставить работать Microsoft WebBrowser синхронно?
|
|||
---|---|---|---|
#18+
Riska, а так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2020, 17:39 |
|
|
Start [/forum/topic.php?fid=15&fpage=2&tid=1335026]: |
0ms |
get settings: |
33ms |
get forum list: |
10ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
44ms |
get topic data: |
40ms |
get forum data: |
5ms |
get page messages: |
665ms |
get tp. blocked users: |
2ms |
others: | 169ms |
total: | 982ms |
0 / 0 |