Работа с командной строкой в Delphi. WinExec

Система и файлы   28 Декабрь 2012  Автор статьи: admin 

В этом небольшом уроке мы рассмотрим работу с командной строкой в Delphi.

Непосредственно передачу команд в командую строку операционной системы Windows в Delphi помогает реализовать процедура WinExec. Вообще, WinExec позволяет обращаться к любым исполняемым файлам с возможностью передачи им каких-либо параметров. В качестве самого примитивного примера использования этой процедуры можно привести запуск калькулятора Windows:

1
WinExec(PAnsiChar('calc.exe'), SW_SHOWNORMAL);

Рассмотрим параметры, которые необходимо передавать WinExec:

  • Команда, которая будет выполнена. Т.е. здесь мы можем указать, например, какой-либо файл, который необходимо запустить. Тип этого параметра — PAnsiChar, а соответственно строки можно передавать только приводя их к типу PAnsiChar.
  • Параметр, характеризующий способ отображения открываемого окна. Если указать SW_SHOWNORMAL, то открываемое окно будет отображено по-умолчанию, а если укажем SW_HIDE, то окно будет скрыто, что бывает удобно использовать при обращении к командной строке, т.к. отображать ее на долю секунды нет никакого смысла.

Теперь научимся обращаться к командной строке, используя процедуру WinExec. Рассмотрим несложный пример:

1
WinExec(PAnsiChar('cmd /c md f:\t'), SW_HIDE);

Как вы видите, мы указали SW_HIDE, чтобы не отображать окно консоли. Обратим внимание на формирование самой команды.

  • Сначала мы указываем «cmd», что говорит о том, что мы запустим командную строку.
  • Затем мы указываем «/c», для того чтобы, после выполнения команды, наша командная строка закрылась.
  • Ну а далее идет сама операция для командной строки — «md f:\t». Эта команда создает папку «t» на диске «f:\».

Для того, чтобы выполнить несколько команд последовательно, можно использовать символ «&», которым мы можем разделить несколько различных команд для последовательного выполнения.

1
WinExec(PAnsiChar('cmd /c md f:\t&md f:\t1'), SW_HIDE);

Небольшой пример компиляции исходного dpr файла Delphi посредством командной строки:

1
2
3
4
5
6
7
8
9
10
11
12
procedure CompileDelphiCode(filename: string);
var
  c: ansistring;
begin
  c := 'cmd /c dcc32 -b -q -h- -w- "' + filename + '"';
  WinExec(PAnsiChar(c), SW_Hide);
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  CompileDelphiCode('f:\t.dpr');
end;

Этой процедуре необходимо передать единственный параметр — абсолютный или относительный путь до исходного dpr файла. В результате будет запущен компилятор Delphi «dcc32», который скомпилирует исходный код в папку с указанным dpr файлом. Если у вас возникли проблемы с тем, что командная строка не знает, что такое dcc32, то укажите вместо dcc32 абсолютный путь до самого компилятора, который лежит в папке с вашей средой Delphi в папке bin и называется «dcc32.exe».

Работа с командной строкой в C#

Научиться программировать

  • на Delphi

  • на Java

  • на C++