Wykonanie programu i wyswietlenie wyników w delphi

0

Jak wykonac program np. systeminfo.exe i wyswietlic jego wyniki w Delphi na powiedzmy zakładce MEMo1.

0

pytanie już było, tu chodzi o programy konsolowe, tak? to obceń <ort>źrudła</ort> programu GUIPeX (na sourceforge.net, można też ściągnąć ze strony upx'a)

0

Z torrego:

{....} 
  private 
    function RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean; 
     
{....} 

function TForm1.RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean; 
var 
  start: TStartupInfo; 
  procInfo: TProcessInformation; 
  tmpName: string; 
  tmp: Windows.THandle; 
  tmpSec: TSecurityAttributes; 
  res: TStringList; 
  return: Cardinal; 
begin 
  Result := False; 
  try 
    { Setze ein Temporäres File } 
    { Set a temporary file } 
    tmpName := 'Test.tmp'; 
    FillChar(tmpSec, SizeOf(tmpSec), #0); 
    tmpSec.nLength := SizeOf(tmpSec); 
    tmpSec.bInheritHandle := True; 
    tmp := Windows.CreateFile(PChar(tmpName), 
           Generic_Write, File_Share_Write, 
           @tmpSec, Create_Always, File_Attribute_Normal, 0); 
    try 
      FillChar(start, SizeOf(start), #0); 
      start.cb          := SizeOf(start); 
      start.hStdOutput  := tmp; 
      start.dwFlags     := StartF_UseStdHandles or StartF_UseShowWindow; 
      start.wShowWindow := SW_Minimize; 
      { Starte das Programm } 
      { Start the program } 
      if CreateProcess(nil, PChar(_exeName + ' ' + _cmdLine), nil, nil, True, 
                       0, nil, PChar(_dirName), start, procInfo) then 
      begin 
        SetPriorityClass(procInfo.hProcess, Idle_Priority_Class); 
        WaitForSingleObject(procInfo.hProcess, Infinite); 
        GetExitCodeProcess(procInfo.hProcess, return); 
        Result := (return = 0); 
        CloseHandle(procInfo.hThread); 
        CloseHandle(procInfo.hProcess); 
        Windows.CloseHandle(tmp); 
        { Die Ausgaben hinzufügen } 
        { Add the output } 
        res := TStringList.Create; 
        try 
          res.LoadFromFile(tmpName); 
          Memo1.Lines.AddStrings(res); 
        finally 
          res.Free; 
        end; 
        Windows.DeleteFile(PChar(tmpName)); 
      end 
      else 
      begin 
        Application.MessageBox(PChar(SysErrorMessage(GetLastError())), 
          'RunCaptured Error', MB_OK); 
      end; 
    except 
      Windows.CloseHandle(tmp); 
      Windows.DeleteFile(PChar(tmpName)); 
      raise; 
    end; 
  finally 
  end; 
end; 


// Beispiel: 
// Example: 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  RunCaptured('C:', 'cmd.exe', '/c dir'); 
end; 

[cya]

1 użytkowników online, w tym zalogowanych: 0, gości: 1