31. januar 2006 - 14:16
Der er
1 kommentar og
2 løsninger
Exekvere andet program fra Delphi ver. 2
Hej,
hvordan får jeg Delphi2 til at køre et andet program?
Fx. pkunzip med en fil som parameter.
Mvh Jaweni
02. februar 2006 - 10:36
#2
Du kan også benytte følgende funktion, den venter på at programmet du kører afslutter.
Det kan være nyttigt da du så venter på at pkunzip er færdig med at pakke ud. og du kan få retur værdien for om pkunzip har lykkedes eller ej.
{
ExecAndWait
Execute a file and wait for it to terminate, returns error code as longword
}
function ExecAndWait(const FileName: string; const CmdShow: Integer): Longword;
var { by Pat Ritchey }
zAppName: array[0..512] of Char;
zCurDir: array[0..255] of Char;
WorkDir: string;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
StrPCopy(zAppName, FileName);
GetDir(0, WorkDir);
StrPCopy(zCurDir, WorkDir);
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := CmdShow;
if not CreateProcess(nil,
zAppName, // pointer to command line string
nil, // pointer to process security attributes
nil, // pointer to thread security attributes
False, // handle inheritance flag
CREATE_NEW_CONSOLE or // creation flags
NORMAL_PRIORITY_CLASS,
nil, //pointer to new environment block
nil, // pointer to current directory name
StartupInfo, // pointer to STARTUPINFO
ProcessInfo) // pointer to PROCESS_INF
then Result := WAIT_FAILED
else
begin
while WaitForSingleObject(ProcessInfo.hProcess, 0) = WAIT_TIMEOUT do
begin
Application.ProcessMessages;
Sleep(50);
end;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, Result);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end;
end; { WinExecAndWait32 }
10. februar 2006 - 10:25
#3
Hej,
da jeg ikke kan afgøre hvilket svar,
der giver den bedste løsning, så
deler I points.