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
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;
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);
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())),
'Ошибка', MB_OK);
end;
except
Windows.CloseHandle(tmp);
Windows.DeleteFile(PChar(tmpName));
raise;
end;
finally
end;
end;
// Example:
procedure TForm1.Button1Click(Sender: TObject);
begin
RunCaptured('C:\', 'cmd.exe', '/c dir');
end;
Pascal 2 C++
Помогите перевести с Pascal на C++ :
Delphi(Pascal):
Код:
if CreateProcess(nil, [COLOR="#ff0000"]PChar[/COLOR](_exeName + ' ' + _cmdLine), nil, nil, True,
0, nil, [COLOR="Red"]PChar(_dirName)[/COLOR], start, procInfo) then
0, nil, [COLOR="Red"]PChar(_dirName)[/COLOR], start, procInfo) then
C++:
Код:
if(CreateProcess(NULL, [COLOR="Red"]?[/COLOR](_exeName + " " + _cmdLine).c_str(), NULL, NULL, True,
0, NULL, [COLOR="#ff0000"]?[/COLOR], &start, &procInfo))
0, NULL, [COLOR="#ff0000"]?[/COLOR], &start, &procInfo))
Не могу понять, как это сделать на C++
Поможет кто-нибудь?
или std::string
Цитата: oxotnik333
AnsiString/String если VCL
или std::string
или std::string
+ c_str()
Цитата: nikitozz
+ c_str()
там уже все есть :)
Можно полный код?
Нормально компилирующейся C++
Цитата: iknownotall
Я не понял:\
Можно полный код?
Нормально компилирующейся C++
Можно полный код?
Нормально компилирующейся C++
нельзя, модераторы злые... повесят за бубенцы
да и тебе самому полезно будет покумекать, глядишь и научишься чему нибудь
В личку мне код отправь! Пожалуйста, срочно надо!
Цитата: iknownotall
В личку мне код отправь! Пожалуйста, срочно надо!
почта просматривается, коридоры простреливаются... ужос, как жить...
Да и вообще, где написано что нельзя посылать код через ЛС?
А если и это запрещено, скинешь по мылу, это они уже не могу посмотреть!
Цитата: iknownotall
А если и это запрещено, скинешь по мылу, это они уже не могу посмотреть!
Могут, могут. Они все могут...
Второе нарушение в профиль. На пару недель. Еще раз - и досвидос.