Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Для новичков > как прервать выполненеи проги |
Автор: razumsap 7.3.2008, 12:09 | ||
Привет всем. Вопрос может и глупый но я чёт с ним уже долго борюсь. Написал программу с использованием встроенного webbrowser-а, когда грзится страничка в нём кнопка закрыть не работает может из-за этого куска - полной загрузки странички
и всё же как программно прервать и корректно выйти из программы. |
Автор: kemiisto 7.3.2008, 18:25 | ||||||
Интересно конечно, что такое
|
Автор: Christoph 7.3.2008, 19:38 |
тебе надо выйти из цикла? break, exit |
Автор: aalexstorm 10.3.2008, 15:20 |
if условие then break - завершение цикла. Application.Terminate - завершение приложения. |
Автор: Serjone 11.3.2008, 12:45 |
у меня возможно подобная проблема. Использую indy, при отправке запроса на php страницу при отключенном интернете, программа перестает закрываться стандартными методами, приходится юзать halt для аварийного завершения. |
Автор: razumsap 11.3.2008, 12:52 | ||||
Пивет, может я не праильно выразился, но дело происходит так Запускается сайт дожидается полная загрузка странички вот такой процедурой
и чтоб программа дожидалась полной загрузки сайта стоит условие while pg <> k do Application.ProcessMessages; (K-тожпеременная типа intrger) Дело в том что прога работает правильно, но от начала и ло конца, а вот я не могу её прервать во время её работы (остановить выполнение действий самого браузера, он продолжает работать дальше) Я даж прикрепил кноку и обработчик по её остановке (как мне посоветовали выше)
но ничего не происходит прога работает дальше, что делать? как её тормознуть (прогу или скорее правильно сказать работу WebBrowsera) |
Автор: razumsap 1.4.2008, 08:57 | ||||
Привет. Сделал как ты и сказал, но вот проблема, после выполнения ниже идущего кода webbrowser1.Stop; Application.Terminate; прога возвращается в предыдущюю процедуру где опятьь таки выполняется код while pg <> k do Application.ProcessMessages; почему webbrowser1.Stop; не остановил весь процесс, не пойму? |
Автор: MadCoder 1.4.2008, 10:28 | ||||||||||
А если так написать:
А на выключение проги написать:
|
Автор: razumsap 1.4.2008, 10:45 | ||||||||||||
Вот нарыл помогло, кстате тут на форуме ![]() TerminateProcess( GetCurrentProcess, 0 ); |
Автор: Alexeis 1.4.2008, 10:57 |
razumsap, ну если нужно жестоко убить, то проще всего Halt ![]() |
Автор: razumsap 3.4.2008, 12:24 | ||||
Жестоко не надо, но вот это деяние Application.ProcessMessages; в цикле while pg <> k do Application.ProcessMessages; не дает ничего сделать енто не подошло - согласен ![]() TerminateProcess( GetCurrentProcess, 0 ); написал так
но работа браузера останавливается, если не выполняется вы шеуказанный цикл. Вобщем фигня, пока забросил эту часть ![]() |
Автор: Alexeis 3.4.2008, 12:51 |
Application.Terminate; выполняет всего навсего PostQuitMessage(0); Т.е. пока не будет обработано сообщение ничего закроется. Чтобы убить webbrowser1, можно попробовать освободить интерфейс COM объекта, после чего, если ссылок не осталось можно смело все уничтожать. |
Автор: imageman 3.4.2008, 18:40 | ||
PS. а
не грузит намертво процессор? может лучше так while pg <> k do begin Application.ProcessMessages; sleep(50); end; только мне не нравятся такие комбинации. Может лучше таймер поставить с периодичностью 100 мсек? |
Автор: MetalFan 3.4.2008, 22:14 |
вообще без нужды и осознанности применение ProcessMessages - зло! ) |
Автор: razumsap 7.4.2008, 09:44 | ||||||
Дело в том что pg говорит о загрузке документа (полностью)
и если у человека очень медленный инет, то задерка 100 или 1000 не поможет:( и если ProcessMessages - зло! - то какова альтернатива? |
Автор: MetalFan 7.4.2008, 17:11 |
а чем OnDocumentComplete не устраивает? |
Автор: razumsap 8.4.2008, 08:54 | ||
Неустраивает тем, что как показала практика, он срабатывает только один первый раз, затем если браузер обработав событие загружает результат обработки (это касается пхп - где по одному адресу на одной странице выдаются разные результаты) и считает что это тотже документ не дождавшись его загрузки выпоьняет дальнейшие действия в программе. |