Резултат от програма

4 отговора 206 прегледа
#1

Резултат от програма

Как мога да разбера, какъв резултат ми е върнала програма, стартирана с ShellExecuteEx?

Отговор
в отговор на ()-:) #2

Re: Резултат от програма

В колко клуба ще го постнеш това?!?

---
...и аз пиша на кирилица!
Отговор
в отговор на ess #3

Re: Резултат от програма

само в 2 :)))

Отговор
в отговор на ()-:) #4

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;


Отговор
в отговор на andrew_nikoloff #5

Re: GetExitCodeProcess

10x, аз междувременно открих тази функция GetExitCodeProcess и си свърших рабората. Още веднъж 10х за примера.

Отговор