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

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

Скажите как запускать коммандную строку с досовскими командами? [D5, Win2k, WinXP]


TankMan ©   (2004-11-12 09:37:00) 

Вобщем проблема в том что например черезе CreateProcess я не могу запустить такую команду как, например, copy ren move и т.д. говорит файл не найден, и ведь правда - в 2к и ХР таких файлов нет, а ведь нужно, если пользователь напишет например такую строку "copy c:\*.txt d:\" или "move c:\archive\file1.zip c:\archive\file2.zip" чтобы она выполнилась, а как? не хочет запускать а ведь в command.com, все ОК - думал запускать так "command /c move c:\archive\file1.zip c:\archive\file2.zip" в ХР заработало в 2к нет :(... не помниаю...
Может есть универсальный вариант? Может кто подсказать?


КаПиБаРа   (2004-11-15 07:34:00) [1]

Anatoly Podgoretsky ©   (25.10.02 16:17)
К тому же очень плохо жестко кодировать путь в программе, для определения имени и местонахождения командного процессора существует системная переменная COMSPEC


Романов Р.В. ©   (19.02.03 20:48)
Другой вариант удаление через командную строку
procedure DeleteDir(const ADir: string);
function GetCmd: string;
var
  Buffer: array[0..4095] of Char;
begin
  SetString(Result, Buffer, GetEnvironmentVariable(PChar('ComSpec'), Buffer, SizeOf(Buffer)));
end;
var
Dir: string;
begin
if Copy(ADir, Length(ADir), 1) <> '\' then
  Dir := ADir + '\'
else
  Dir := ADir;
if DirectoryExists(Dir) then
  ShellExecute(GetDesktopWindow, nil, PChar(GetCmd),PChar('/C rd /S /Q '+Dir),nil, SW_HIDE)
end;


TankMan   (2004-11-15 07:16:00) [2]

>>Ega23
Спасибо! Заработало :)


TankMan   (2004-11-12 14:48:00) [3]

Благодарю за пример - посмотрю вечером... ох как я надеюсь что заработает :)


Ega23   (2004-11-12 09:48:00) [4]

procedure TFSendMessage.bbOKClick(Sender: TObject);
var
i:Integer;
hnd:THandle;
ss:string;
const Command : String ='cmd /c net send ';

begin

.........

if AdditionalCompName<>'' then
 begin   // Дополнительная рассылка, возможно в весь домен
  ss:=Command+AdditionalCompName+' '+eMessText.Text+' '+SessInfo.PersNam;
  hnd:=winexec(PCHAR(ss), SW_HIDE);
  if hnd <= 32 then
   begin
    badsound;
    Exit;
   end;
..........



?


Alx2   (2004-11-12 09:47:00) [5]

cmd.exe /c <команды>


Наверх

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