
27.01.2009, 19:43
|
|
Познающий
Регистрация: 31.08.2007
Сообщений: 94
С нами:
9839462
Репутация:
200
|
|
WinExec и ShellExecute немного не то. С их помощью можно выполнять команды DOS (типа rundl32 xx.dl, бла бла ), вызывать процедуры запуска файлов с параметрами. Но для того, чтобы выполнить консольную команду можно создать поток, запускающий консольную программу. Подключаем только уже написанный для этого модуль.
Код:
//Подключаем модуль в Uses
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
StdCtrls, ExtCtrls, ComCtrls, CmdLine;
type
TForm1 = class(TForm)
btnRun: TButton;
btnWrite: TButton;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
procedure DoCommand(_lpcmd:string);
end;
var
Form1: TForm1;
CmdCom :TRedirectThread;
implementation
{$R *.dfm}
procedure TForm1.DoCommand(_lpcmd:string);
var
_data:string;
begin
if CmdCom<>nil then
begin
_data :=_lpcmd+#13#10;
CharToOem(@_data[1],@_data[1]);
CmdCom.WriteData(_data);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
CmdCom:= TRedirectThread.Create(true);
CmdCom.RunProgram :='cmd';
CmdCom.Params :='';
CmdCom.FreeOnTerminate := true;
CmdCom.Resume;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if CmdCom<>nil then
CmdCom.Terminate();
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
DoCommand('mkdir c:\121'); // задаем командную строку
end;
end.
Модуль CmdLine
|
|
|