Резултат от програма
4 отговора
206 прегледа
Резултат от програма
Как мога да разбера, какъв резултат ми е върнала програма, стартирана с ShellExecuteEx?
Re: Резултат от програма
В колко клуба ще го постнеш това?!?
---
...и аз пиша на кирилица!
---
...и аз пиша на кирилица!
GetExitCodeProcess
Айде пък ще почерпиш една бира по e-mail-а :)
////////////////////////////////////////////////////////////////
// AppName: name (including path) of the application
// AppArgs: command line arguments
// Wait: 0 = don't wait on application
// >0 = wait until application has finished (maximum in milliseconds)
// <0 = wait until application has started (maximum in milliseconds)
// Hide: True = application runs invisible in the background
// ExitCode: exitcode of the application (only avaiable if Wait <> 0)
//
function ShellExecuteEx(const AppName, AppArgs: string; const Wait: Integer;
const Hide: boolean; var ExitCode: DWORD): boolean;
var
myStartupInfo: TStartupInfo;
myProcessInfo: TProcessInformation;
sAppName: string;
iWaitRes: Integer;
begin
// initialize the startupinfo
FillChar(myStartupInfo, SizeOf(TStartupInfo), 0);
myStartupInfo.cb := Sizeof(TStartupInfo);
myStartupInfo.dwFlags := STARTF_USESHOWWINDOW;
if Hide then // hide application
myStartupInfo.wShowWindow := SW_HIDE
else // show application
myStartupInfo.wShowWindow := SW_SHOWNORMAL;
// prepare applicationname
sAppName := AppName;
if (Length(sAppName) > 0) and (sAppName[1] <> '"') then
sAppName := '"' + sAppName + '"';
// start process
ExitCode := 0;
Result := CreateProcess(nil, PChar(sAppName + ' ' + AppArgs), nil, nil, false,
NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(AppName)),
myStartupInfo, myProcessInfo);
// could process be started ?
if Result then
begin
// wait on process ?
if (Wait <> 0) then
begin
if (Wait > 0) then // wait until process terminates
iWaitRes := WaitForSingleObject(myProcessInfo.hProcess, Wait)
else // wait until process has been started
iWaitRes := WaitForInputIdle(myProcessInfo.hProcess, Abs(Wait));
// timeout reached ?
if iWaitRes = WAIT_TIMEOUT then
begin
Result := false;
TerminateProcess(myProcessInfo.hProcess, 1);
end;
// get exitcode
GetExitCodeProcess(myProcessInfo.hProcess, ExitCode);
end;
CloseHandle(myProcessInfo.hProcess);
end;
end;
Re: GetExitCodeProcess
10x, аз междувременно открих тази функция GetExitCodeProcess и си свърших рабората. Още веднъж 10х за примера.