Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Время запуска процесса / 8 сообщений из 8, страница 1 из 1
23.04.2003, 10:22
    #32146405
bav
bav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
Добрый день всем.
Есть приложение...когда оно запускается нужна седлать какую-то индикацию...тобишь нужно знать когда оно закончит инициализироваться...
Как определить когда оно запустится окончательно?
...
Рейтинг: 0 / 0
23.04.2003, 10:28
    #32146415
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
зависит от приложения....
и от того что ты подразумеваешь под инициализацией...
в одном случае это может быть после окончания работы функции Application.Initialize в дрогом после создания последнего объекта при загрузке приложения
...
Рейтинг: 0 / 0
23.04.2003, 14:52
    #32146795
bav
bav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
Из приложения вызвается другое, которое тянет данные из базы, но исходиков у меня нет, и пока оно прорисует все элементы и вытянет надо как-то выяснить это время...как можно есть какие -нибудь функции API
...
Рейтинг: 0 / 0
23.04.2003, 16:32
    #32146898
oleg_e
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
Можно узнать время, например, до появления главного окна.
Но это не будет означать, что данные загрузились. Или будут?
Как программа работает?
Может какая нить заставка есть?
Тогда можно ждать пока главное окно не вылезет наверх.
...
Рейтинг: 0 / 0
23.04.2003, 18:00
    #32147036
bav
bav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
Вобщем...там есть ListView
И пока данные туда не закачаются форма до конца не прорисовывается.
...
Рейтинг: 0 / 0
23.04.2003, 18:48
    #32147103
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
Запускай приложение через CreateProcess
получишь hProcess (hThread сразу CloseHandle)
и на него WaitForInputIdle
как отпустит - все готово к работе.
Но это общая функция - отпускает, когда приложение начинает обрабатывать очередь сообщений
В общем, что-то вроде

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
procedure LoadClient(const ClientName: string);
var
  si: STARTUPINFO;
  pi: PROCESS_INFORMATION;

begin
  ZeroMemory(@si,sizeof(si));
  si.cb := sizeof(si);
  if not CreateProcess(nil,PChar(ClientName),nil,nil,false,0,nil,nil,si,pi)
    then
      raise Exception.Create('Не могу запустить ' + ClientName);
  CloseHandle(pi.hThread);
  try
    while WaitForInputIdle(pi.hProcess, 1000) = WAIT_TIMEOUT do
      if Assigned(FormLoad) then // делаем что надо - здесь обновляем форму
        FormLoad.Update;
  finally
    CloseHandle(pi.hProcess);
  end;
end;
...
Рейтинг: 0 / 0
24.04.2003, 19:01
    #32148326
bav
bav
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
А как узнать, что приложение стало обрабатывать сообщения, если нет возмоожности открыть его другим процессом?
Есть то , что я нажимаю кнопку и запускаю его, то есть влезть в код того приложения нет возможности :(
...
Рейтинг: 0 / 0
24.04.2003, 19:10
    #32148331
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Время запуска процесса
Найди FindWindow окно этого приложения и пошли ему через Sendmessage какое-нибудь сообщение, например, WM_GETTEXT - заодно и заголовок проверишь...
Возврат из этой функции будет только после обработки сообщения
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Время запуска процесса / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]