Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запуск приложения [D6, WinXP]


Morfey COOL ©   (2002-09-17 12:19:00) 

Help ! Не могу найти рабочий пример запуска внешнего приложения. Помогите кто может чайнику исходником... ! Спасибо заранее.


andrey_pst   (2002-09-17 13:15:00) [1]

var
PChTmp : PChar;
si : STARTUPINFO;
pi : PROCESS_INFORMATION;
ExitCodes : DWORD; // коды возврата архиватора (архивация)
...
// свернем контракт в архив RAR:
// выделим память под строку с нулевым символом
PChTmp := StrNew(PChar(ExtractShortPathName(GetCurrentDir) + "\rar.exe a " + fdPath + Label8.Caption + "\" + Label5.Caption + "\fd_" + n_kontrakt + ".rar " + fdPath + Label8.Caption + "\" + Label5.Caption + "\" + n_kontrakt + "\*.xls -df -ep -m5 -ri15:0 -s -rr"));
ZeroMemory(@si, sizeof(si));
si.cb := SizeOf(si);
// запустим Rar.exe
if not CreateProcess( nil, PChTmp, nil, nil, False, 0, nil, nil, si, pi ) then
MessageDlg("ОШИБКА !!!." + #13 + "Не могу запустить архиватор.", mtError, [mbOK], 0);
QFS_SKontr.Last // переходим к последнему контракту
else
begin
WaitForSingleObject(pi.hProcess, INFINITE); // ждем окончания процесса
GetExitCodeProcess(pi.hProcess, ExitCodes); // получаем код возврата
// посмотрим что вернулось:
case ExitCodes of
255 :
begin
MessageDlg("ОШИБКА АРХИВАТОРА № 255 !!!." + #13 + "Процесс архивации прерван пользователем." + #13 +
"Файлы не были полностью заархивированы и отправлены получателю." + #13 +
"Программа будет остановлена." + #13 +
"С вопросами обращайтесь к системному администратору.", mtError, [mbOK], 0);
QFS_SKontr.Last; // переходим к последнему контракту
end;
...
end;

CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
StrDispose(PChTmp); // освободим память из под строки с нулевым символом


AL2002   (2002-09-17 12:50:00) [2]

ShellExecute(Handle, "open", "c:\Windows\notepad.exe", nil, nil, SW_SHOWNORMAL);


REA   (2002-09-17 12:45:00) [3]

CreateProcess (сто раз было на форуме) или WinExec


AFrolov   (2002-09-17 12:45:00) [4]

ShellExecute


Наверх

Титульная страница Поиск, карта сайта Написать письмо