Newsgroup: it.comp.lang.delphi
Titolo: delphi 7 to MSdos

Ciao ragazzi...Ho cercato sulla rete come da delphi passare dei
comandi in dos ed eseguirli..ma con scarso successo...mi affido a voi
che sicuramente ne sapete di più di me..E' possibile passando delle
string o string list contenenti dei comandi dos ed eseguirli
direttamente???
grazie mille!!!!!!!

 comandi in dos ed eseguirli..ma con scarso successo...
Puoi usare ShellExecute o ShellExecuteEx invocando "cmd.exe" (se sei sotto
NT). Per eseguire un comando specifico, c'è il parametro "/c" a cui deve
seguire il comando. Es.: cmd.exe /c dir
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 comandi in dos ed eseguirli..ma con scarso successo...mi affido a voi
Beh, se devi semplicemente eseguirli devi solo lanciare uno shellexecute 
per ogni riga della stringlist, come ti ha suggerito Andrea.
Se invece ti dovesse servire anche aspettare che il pgm chiamato finisca 
e magari anche catturare l'input del programma, ti copio/incollo il 
codice che ho utilizzato io tempo fa (che probabilmente ho copiato a mia 
volta :) )
// Restituisce un nome di file da utilizzare
// per dati temporanei.
function GetTemporaryFileName: string;
var
   Buffer: array[0..MAX_PATH] of Char;
begin
   Result := '';
   FillChar(Buffer, SizeOf(Buffer), #0);
   if GetTempFileName('.', '', 0, Buffer) <> 0 then
     Result := Buffer;
end;
// restituisce il valore della variabile
// d'ambiente indicata.
function GetEnvValue(VariableName: string): string;
var
   Buffer: array[0..MAX_PATH] of Char;
begin
   Result := '';
   FillChar(Buffer, SizeOf(Buffer), #0);
   if GetEnvironmentVariable(PChar(VariableName), Buffer, 
SizeOf(Buffer)) <> 0 then
     Result := Buffer;
end;
// Esegue la riga di comando passata e ne carica l'output
// nella variabile Output.
procedure ExecuteCmdLine(CmdLine: string; Output: TStrings);
var
   OutputFileName: string;
   StartupInfo: TStartupInfo;
   ProcessInfo: TProcessInformation;
begin
   // Prima di tutto, mi procuro un nome di file temporaneo da usare per
   // redirigere l'output.
   OutputFileName := GetTemporaryFileName;
   try
     // Occorre identificare l'esecutore di comandi (COMSPEC)
     // per poter eseguire anche i comandi interni, come Dir.
     CmdLine := GetEnvValue('COMSPEC') + ' /C ' + CmdLine + ' > "' + 
OutputFileName + '"';
     // Riempio StartupInfo con valori di default.
     GetStartupInfo(StartupInfo);
     // Per non mostrare la console.
     StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
     StartupInfo.wShowWindow := 0;
     // Eseguo la riga di comando.
     Win32Check(CreateProcess(nil, PChar(CmdLine), nil, nil,
       False, 0, nil, nil, StartupInfo, ProcessInfo));
     try
       // Attendo il termine del comando.
       WaitForInputIdle(ProcessInfo.hProcess, INFINITE);
       WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
     finally
       // Rilascio gli handle allocati.
       CloseHandle(ProcessInfo.hThread);
       CloseHandle(ProcessInfo.hProcess);
     end;
     // Carico l'output.
     Output.LoadFromFile(OutputFileName);
   finally
     // Pulizia.
     if FileExists(OutputFileName) then
       DeleteFile(OutputFileName);
   end;
end;
-- 
Jax

 Se invece ti dovesse servire anche aspettare che il pgm chiamato finisca
In questo caso è ugualmente utilizzabile ShellExecuteEx...


 questo articolo e` stato inviato via web dal servizio gratuitohttp://
www.newsland.it/newssegnala
 gli abusi ad 
a...@newsland.it
grazie mille a tutti verqamente mi siete stati di grande
aiuto...grazie!!!!!!!