Конференция "Основная" » Программно запустить Delphi и дождаться полной загрузки [WinXP]
 
  • IGray (12.08.11 13:08) [0]
    Здравствуйте! Как сделать сабж, собственно?
    Пробовал юзать ShellExecuteEx+WaitForInputIdle, но WaitForInputIdle отрабатывает гораздо раньше завершения загрузки... Заранее спасибо!
  • oldman © (12.08.11 13:57) [1]
    Что в вашем понимании есть "полная загрузка"?
  • IGray (12.08.11 14:06) [2]
    Ну, скажем, когда в Delphi перейдёт в режим ожидания действий пользователя.
  • QAZ (12.08.11 14:33) [3]
    там есть такой режим?
  • IGray (12.08.11 14:52) [4]
    Не поверите - есть)
    Delphi после загрузки ЖДЁТ, какой очередной шедевр вы родите ;)
    А если при загрузке произошла ошибка - ЖДЁТ когда юзер нажмёт ОК
  • Cobalt © (12.08.11 15:05) [5]
    Определись, какое окно тебе необходимо для работы, и исследуй его состояние в "режим готовности" (видимо, или содержит определенный текст, или еще чего)
  • oldman © (12.08.11 15:06) [6]
    Вам очень повезло, что возникало только эти две ситуации.

    По сабжу: сомневаюсь, что при переходе в "режим ожидания действий пользователя" генерируется хоть какое-нибудь системное сообщение...
  • oldman © (12.08.11 15:09) [7]
    После запуска программы она может начать собирать рабочую информацию (цеплять библиотеки, проверять настройки и т.д.)
    Но при этом программа "полностью загружена" и работоспособна.
    А пользователю для нажатия ОК еще курить и курить...
  • IGray (12.08.11 15:13) [8]

    > Вам очень повезло, что возникало только эти две ситуации.

    Это я для примера.
  • IGray (12.08.11 15:42) [9]

    > oldman ©   (12.08.11 15:09) [7]
    > После запуска программы она может начать собирать рабочую
    > информацию (цеплять библиотеки, проверять настройки и т.
    > д.)
    > Но при этом программа "полностью загружена" и работоспособна.
    >

    Мне нужно отследить именно ту ситуацию, о которой я сказал выше...
    Могу ещё конкретнее - когда главное окно Delphi станет активным.
  • Anatoly Podgoretsky © (12.08.11 16:56) [10]

    > oldman ©   (12.08.11 15:09) [7]

    Ему не для программы, а для Дельфи
  • oldman © (12.08.11 17:17) [11]

    > когда главное окно Delphi станет активным


    может, что никогда
    что в твоем понимании "активным"
  • Cobalt © (12.08.11 19:03) [12]
    вот, главное - четкая постановка задачи :-)
  • IGray (12.08.11 20:48) [13]

    > Cobalt ©   (12.08.11 19:03) [12]
    > вот, главное - четкая постановка задачи :-)

    А я думал, что главное - в каждой теме отметиться, и, желательно, не раз ;)

    Ещё конкретнее - мне нужно программно:
    1. Загрузить в Delphi некоторый проект.
    2. После этого открыть в Delphi некоторую форму из этого проекта.

    И первое и второе по-отдельности я успешно делаю посредством ShellExecute, но последовательно два вызова ShellExecute приводят к запуску двух копий Delphi (а иногда и похлеще эффекты бывают).
    Это происходит из-за того, что второй вызов Delphi начинается до того как закончится загрузка проекта в результате первого вызова.

    Отсюда, собственно, и вопрос - как дождаться полной загрузки проекта в Delphi?
  • Германн © (13.08.11 01:02) [14]

    > А я думал, что главное - в каждой теме отметиться, и, желательно,
    >  не раз ;)

    Отмечаюсь первый раз.
    А зачем нужно запускать Дельфи программно, да ещё и программно открывать в IDE какую-то форму?
    Очень похоже на бред.
    Программно запускать консольный компилятор Дельфи - это я понимаю и принимаю. Всё прочее - очень похоже на бред.

    P.S.
    Короче!
    http://www.gunsmoker.ru/2008/10/x-y-z.html
  • IGray (13.08.11 11:15) [15]

    > Германн ©   (13.08.11 01:02) [14]
    > А зачем нужно запускать Дельфи программно, да ещё и программно открывать в IDE какую-то форму?
    > Очень похоже на бред.

    Вы задаёте вопрос, и, не дожидаясь ответа, сами себе на него отвечаете.
    Возможно, Вам сложно будет в это поверить, но иногда ЧЕЛОВЕКУ нужен ответ именно на ТОТ вопрос, который он задаёт (давайте всё-таки допускать такое чудо), и может не стоит сразу записывать собеседника в идиоты, только потому, что Вы не понимаете, нафига ему это надо?
    Как я понял, Вы, не зная ответ на мой вопрос, ждёте, когда я изменю условия задачи до такой степени, что один из имеющихся у Вас ответов к ним подойдёт? Но извините, в данном случае это невозможно.
    Хотите, чтобы я на 5-ти страницах доказал Вам, что мне нужно именно то, что я попросил? Но разве это будет эффективной тратой Вашего и моего времени?
  • Германн © (14.08.11 00:23) [16]

    > Возможно, Вам сложно будет в это поверить, но иногда ЧЕЛОВЕКУ
    > нужен ответ именно на ТОТ вопрос, который он задаёт

    Почему мне будет сложно поверить? Сам не раз бывал в такой ситуации. Хочется что-то сделать, а не получается.

    P.S.
    Но если этот человек задает вопрос "неточно" и не может сформулировать важные критерии вопроса так, что они будут понятны другим участникам форума, то в 99.9% случаев ему нужно самому искать пути решения своей проблемы.
  • Дмитрий Белькевич (14.08.11 09:50) [17]

    > Хотите, чтобы я на 5-ти страницах доказал Вам, что мне нужно
    > именно то, что я попросил? Но разве это будет эффективной
    > тратой Вашего и моего времени?


    Обычно достаточно одного-двух предложений.

    Ответ на вопрос не знаю. Но знаю, куда копать:

    http://google.com/ WaitForInputIdle

    http://delphimaster.net/ WaitForInputIdle
  • Игорь Шевченко © (15.08.11 10:30) [18]

    > Отсюда, собственно, и вопрос - как дождаться полной загрузки
    > проекта в Delphi?


    поищи, как sysintenals с regedit работает, возможно подобный способ поможет
 
Конференция "Основная" » Программно запустить Delphi и дождаться полной загрузки [WinXP]
Есть новые Нет новых   [120371   +57][b:0][p:0.001]