读书人

delphi调用WinExec或ShellExecute执行

发布时间: 2013-07-16 22:38:05 作者: rapoo

delphi调用WinExec或ShellExecute执行了外部的数据操作,该如何让数据操作完毕后再继续执行delphi里面的代码
新人一枚,求大神讲解。delphi调用WinExec或ShellExecute执行了外部的数据操作,该怎么让数据操作完毕后再继续执行delphi里面的代码
[解决办法]


var ProcessInfo : PROCESS_INFORMATION ;
StartupInfo : STARTUPINFO ;
fillchar(StartupInfo, sizeof(StartupInfo),0);
StartupInfo.cb := sizeof(StartupInfo) ;
if(CreateProcess("c:\winnt\notepad.exe", nil,
nil,nil,FALSE,0,nil,
nil,@StartupInfo,@ProcessInfo)) then
begin
WaitForSingleObject(ProcessInfo.hProcess,INFINITE);
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
end
else
MessageBox("The process could not be started...");

[解决办法]
function RunWait(FileName: string; Visibility: Integer): THandle;
var
zAppName: array[0..512] of Char;
zCurDir: array[0..255] of Char;
WorkDir: string;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
try
StrPCopy(zAppName, FileName);
GetDir(0, WorkDir);
StrPCopy(zCurDir, WorkDir);
FillChar(StartupInfo, SizeOf(StartupInfo), #0);
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
StartupInfo.wShowWindow := Visibility;
if not CreateProcess(nil, zAppName, nil, nil, false, Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then
begin
result := 0;
Exit;


end
else
begin
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
GetExitCodeProcess(ProcessInfo.hProcess, result);
end;
finally
end;
end;

读书人网 >.NET

热点推荐