Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2010, 13:01   #1
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию Как дождаться завершения запущенного приложения

Здравствуйте, собственно мой вопрос в названии темы.........ситуация такова: я запускаю из программы на делфях другую программу, и надо чтобы первая ждала пока та не выполнится, после чего продолжила работать
вот код
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var Data:String;
begin
Data:=InputBox('Ñîçäàíèå îò÷åòà','Ââåäèòå äàòó', DateToStr(Date));
ShellExecute(Handle, nil, 'B&R.exe', PAnsiChar(Copy(Data, 1, 2)+Copy(Data, 4, 2)+Copy(Data, 7, 4)), nil, SW_SHOWNA);
Sleep(10000);
ShowMessage('fhdfh');
end;
Что можно использовать вместо Sleep?
DennerV вне форума Ответить с цитированием
Старый 13.08.2010, 13:12   #2
r9m
₪₪₪₪₪₪₪₪
Форумчанин
 
Аватар для r9m
 
Регистрация: 16.04.2007
Сообщений: 471
По умолчанию

Нужно использовать CreateProcess
r9m вне форума Ответить с цитированием
Старый 13.08.2010, 13:16   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

э-э-э
Код:
h:=ShellExecute(Handle, nil, 'B&R.exe', PAnsiChar(Copy(Data, 1, 2)+Copy(Data, 4, 2)+Copy(Data, 7, 4)), nil, SW_SHOWNA);
 WaitForSingleObject(h,INFINITE);
Только здается мне чо ShellExecute не очень подходит. Тут лучше CreateProcess или на худой конец ShellExecuteEx - нужно получить хендл процесса.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.08.2010, 13:23   #4
DennerV
Пользователь
 
Регистрация: 14.05.2009
Сообщений: 44
По умолчанию

Не подскажите как это сделать, я CreateProcess ни разу не пользовался
DennerV вне форума Ответить с цитированием
Старый 13.08.2010, 13:27   #5
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

запускаемая программа должна, к слову, получить хендл процесса, который будет завершать. Процесс получает свой хендл так, параметр SYNCHRONIZE, обратите внимание:
hopen=OpenProcess(SYNCHRONIZE, TRUE,blabla=(GetCurrentProcessId))
передает хендл через командную строку.. можете сделать как то по другому, но так проще вроде
и, да, ЖДЕТ освобождения данного хендла так:
WaitForSingleObject(h,INFINITE)

если знавли ассемблер IA-32, вот вам небольшой код программы, занимающейся самоудалением, запускающая процесс, который ее собственно и удаляет, ожидая перед этим ее завершения
слегка занимательная программка (под masm32)


блин я наоборот понял вопрос... отставить командную строку!
Вложения
Тип файла: rar Uninstaller.rar (2.2 Кб, 38 просмотров)
Нет, ну правда..

Последний раз редактировалось yuran666666; 13.08.2010 в 13:29.
yuran666666 вне форума Ответить с цитированием
Старый 13.08.2010, 13:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://www.delphiworld.narod.ru/base...terminate.html
http://yandex.ua/yandsearch?text=Cre...ammersforum.ru
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть форму индикатора процесса после завершения цикла? SkAndrew Общие вопросы Delphi 11 03.02.2010 07:39
Как дождаться завершения процедуры? Hintman Win Api 6 14.10.2009 14:46
Как программно вызвать окно завершения работы UfoRoot Win Api 4 21.01.2009 11:15
Как запустить приложение, дождаться его исполнения и только потом выполнять код? il76 Win Api 6 19.07.2007 14:00
как узнать путь запущенного сервиса Alar Общие вопросы Delphi 0 30.10.2006 11:18