Помогите, please, новичку. Как из проги на Паскале запустить другую? И какие именно проги можно таким образом запускать - любые исполняемые или только другие паскальские? Я в этом дуб дубом. Знаю, что за это отвечает процедура Exec, у которой первый параметр - имя запускаемого файла, а вот что именно указывает второй параметр? И вроде бы ещё надо использофать SwapVectors ?
Объясните, пожалуйста, как можно подробнее. Заранее спасибо.
Exec (процедура) (модуль Dos)
_________________________________
Выполняет заданную программу с заданной командной строкой.
Объявление:
Procedure Exec(Path, CmdLine : String);
Режим:
Real, Protected
Замечания:
Ошибки сообщаются в переменной DosError. При компилировании программы,
которая использует вызов Exec, уменьшите максимальный размер кучи, иначе,
возможно, что для запускаемой программы не хватит памяти (DosError = 8).
Смотри также:
DosError
DosExitCode
SwapVectors
SwapVectors (процедура) (модуль Dos)
_______________________________________
Переключает указатели SaveIntXX в модуле System на текущие вектора.
Объявление:
Procedure SwapVectors;
Режим:
Real, Protected
Замечания:
Меняет содержимое указателей SaveIntXX в модуле System на текущее содержимое
векторов прерываний. SwapVectors обычно вызывается перед и после обращения к
Exec. Это гарантирует, что вызываемый процесс не будет использовать никаких
подпрограмм обработки прерываний, установленных текущим процессом и
наоборот.
И еще, в том же хелпе к пасу:
{ Пример программы для DosExitCode и Exec }
{$M $4000, 0, 0 } { 16Kб стек, нет кучи }
Uses Dos;
Var ProgramName, CmdLine : String;
Begin
Write('Имя программы для запуска (с путем) : ');
ReadLn(ProgramName);
Write('Параметры командной строки ', ProgramName, ' : ');
ReadLn(CmdLine);
WriteLn('Пробую запустить...');
SwapVectors;
Exec(ProgramName, CmdLine);
SwapVectors;
WriteLn('... вернулся из Exec');
{ Была ошибка ? }
If DosError<>0 Then WriteLn('Ошибка DOS #', DosError)
Else WriteLn('Запуск был удачным. Код выхода = ', DosExitCode);
End.
Cпасибо! Получилось запустить прoграммку. Но, всё-таки, так можно запускать только DOSовские проги или нет? А в Паскале for Windows?
Булат Шакиров
18.12.2003 15:52
Только DOS-программы.
WinExec
Но, Вы сможете выполнить winexec ТОЛЬКО ПОД WINDOWS 3.XX. Под 95-й и выше Ваша программа повиснет/даст ошибку.