![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Gnusss |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 19.1.2005 Репутация: нет Всего: нет |
Привет всем!
Столкнулся с такой проблемой: У себя в программе использую ShellExecute для запуска и открытия разных мест в том числе и сетевых ресурсов, и вот иногда когда этот ресурс например не доступен программа зависает т.к. ждет пока ShellExecute завершит свою работу. ShellExecute вызываю вот так:
Можно ли сделать так чтобы после вызова ShellExecute программа продолжала дальше работать, не дожидаясь пока она закончит работать. Заранее спасибо за ответ! |
|||
|
||||
| FRAGNATIC |
|
|||
|
..::Свирепый Кодер::.. ![]() ![]() Профиль Группа: Участник Сообщений: 901 Регистрация: 17.10.2004 Где: ICQ Репутация: нет Всего: 11 |
Gnusss
в отдельном потоке вызывай=) |
|||
|
||||
| Гость_Gnusss |
|
|||
|
Unregistered |
FRAGNATIC, это не выход.
Представим такую ситуаци: Ползовател жмет на ссылку, запускаетс поток, но далше ползовател ничего не видет т.к ссылка не доступная. он нажимает еще раз, запускается еще одит поток, и так продолжается раз по 5 на кардую недоступную ссылку. И представь сколько в конце для в приложении будет потоков? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Можно засечь время таймером и сразу выдать сообщение мол приложение запускается ждите или убейте желательно модальное.
После успешного запуска можно програмно закрыть это окошко. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Демо |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 3.11.2005 Репутация: 6 Всего: 50 |
Ну почему не выход? Воспользуйся либо ShellExecuteEx, которая может возвращать HProcess, либо CreateProcess. Синхронизировать с основным потоком и известить пользователя - дело техники. -------------------- |
|||
|
||||
| Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 10 Всего: 133 |
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Вариант с HProcess неплохой только вот что не возникнет ли проблем с доступом к общей памяти двух процессов - програмного и системного - мютекс ведь не поставишь.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Gnusss |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 19.1.2005 Репутация: нет Всего: нет |
Ладно. Всем спасибо!
|
|||
|
||||
| Gnusss |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 19.1.2005 Репутация: нет Всего: нет |
В общем, решил использовать потоки. И быстренько написал маленький модуль:
Как по вашему нормально? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
NTRunLink должна возвращать хотя бы дескриртор потока чтоб затем
его можно было аварийно завершить. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Гость_Gnusss |
|
|||
|
Unregistered |
В моем случаи мне нужно толко открыть ссылку.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Так вот чтобы не ждать зависший поток, а произвести аварийное завершение и нужно что-то возвращать. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Gnusss |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 190 Регистрация: 19.1.2005 Репутация: нет Всего: нет |
Как я понял Windows прекращает работу ShellExecute, если в течении нескольких минут она не дала никаких резултатов(т.е ресурс по указанной ссыке не доступен).
|
|||
|
||||
| mixan |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 2.1.2006 Репутация: нет Всего: нет |
А попробуй че-то типа этого:
|
|||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |