-
Здравствуйте! Как сделать сабж, собственно? Пробовал юзать ShellExecuteEx+WaitForInputIdle, но WaitForInputIdle отрабатывает гораздо раньше завершения загрузки... Заранее спасибо!
-
Что в вашем понимании есть "полная загрузка"?
-
Ну, скажем, когда в Delphi перейдёт в режим ожидания действий пользователя.
-
там есть такой режим?
-
Не поверите - есть) Delphi после загрузки ЖДЁТ, какой очередной шедевр вы родите ;) А если при загрузке произошла ошибка - ЖДЁТ когда юзер нажмёт ОК
-
Определись, какое окно тебе необходимо для работы, и исследуй его состояние в "режим готовности" (видимо, или содержит определенный текст, или еще чего)
-
Вам очень повезло, что возникало только эти две ситуации.
По сабжу: сомневаюсь, что при переходе в "режим ожидания действий пользователя" генерируется хоть какое-нибудь системное сообщение...
-
После запуска программы она может начать собирать рабочую информацию (цеплять библиотеки, проверять настройки и т.д.) Но при этом программа "полностью загружена" и работоспособна. А пользователю для нажатия ОК еще курить и курить...
-
> Вам очень повезло, что возникало только эти две ситуации.
Это я для примера.
-
> oldman © (12.08.11 15:09) [7] > После запуска программы она может начать собирать рабочую > информацию (цеплять библиотеки, проверять настройки и т. > д.) > Но при этом программа "полностью загружена" и работоспособна. >
Мне нужно отследить именно ту ситуацию, о которой я сказал выше... Могу ещё конкретнее - когда главное окно Delphi станет активным.
-
> oldman © (12.08.11 15:09) [7]
Ему не для программы, а для Дельфи
-
> когда главное окно Delphi станет активным
может, что никогда что в твоем понимании "активным"
-
вот, главное - четкая постановка задачи :-)
-
> Cobalt © (12.08.11 19:03) [12] > вот, главное - четкая постановка задачи :-)
А я думал, что главное - в каждой теме отметиться, и, желательно, не раз ;)
Ещё конкретнее - мне нужно программно: 1. Загрузить в Delphi некоторый проект. 2. После этого открыть в Delphi некоторую форму из этого проекта.
И первое и второе по-отдельности я успешно делаю посредством ShellExecute, но последовательно два вызова ShellExecute приводят к запуску двух копий Delphi (а иногда и похлеще эффекты бывают). Это происходит из-за того, что второй вызов Delphi начинается до того как закончится загрузка проекта в результате первого вызова.
Отсюда, собственно, и вопрос - как дождаться полной загрузки проекта в Delphi?
-
> А я думал, что главное - в каждой теме отметиться, и, желательно, > не раз ;)
Отмечаюсь первый раз. А зачем нужно запускать Дельфи программно, да ещё и программно открывать в IDE какую-то форму? Очень похоже на бред. Программно запускать консольный компилятор Дельфи - это я понимаю и принимаю. Всё прочее - очень похоже на бред. P.S. Короче! http://www.gunsmoker.ru/2008/10/x-y-z.html
-
> Германн © (13.08.11 01:02) [14] > А зачем нужно запускать Дельфи программно, да ещё и программно открывать в IDE какую-то форму? > Очень похоже на бред.
Вы задаёте вопрос, и, не дожидаясь ответа, сами себе на него отвечаете. Возможно, Вам сложно будет в это поверить, но иногда ЧЕЛОВЕКУ нужен ответ именно на ТОТ вопрос, который он задаёт (давайте всё-таки допускать такое чудо), и может не стоит сразу записывать собеседника в идиоты, только потому, что Вы не понимаете, нафига ему это надо? Как я понял, Вы, не зная ответ на мой вопрос, ждёте, когда я изменю условия задачи до такой степени, что один из имеющихся у Вас ответов к ним подойдёт? Но извините, в данном случае это невозможно. Хотите, чтобы я на 5-ти страницах доказал Вам, что мне нужно именно то, что я попросил? Но разве это будет эффективной тратой Вашего и моего времени?
-
> Возможно, Вам сложно будет в это поверить, но иногда ЧЕЛОВЕКУ > нужен ответ именно на ТОТ вопрос, который он задаёт
Почему мне будет сложно поверить? Сам не раз бывал в такой ситуации. Хочется что-то сделать, а не получается.
P.S. Но если этот человек задает вопрос "неточно" и не может сформулировать важные критерии вопроса так, что они будут понятны другим участникам форума, то в 99.9% случаев ему нужно самому искать пути решения своей проблемы.
-
> Хотите, чтобы я на 5-ти страницах доказал Вам, что мне нужно > именно то, что я попросил? Но разве это будет эффективной > тратой Вашего и моего времени?
Обычно достаточно одного-двух предложений. Ответ на вопрос не знаю. Но знаю, куда копать: http://google.com/ WaitForInputIdle http://delphimaster.net/ WaitForInputIdle
-
> Отсюда, собственно, и вопрос - как дождаться полной загрузки > проекта в Delphi?
поищи, как sysintenals с regedit работает, возможно подобный способ поможет
|