delphi调用WinExec或ShellExecute执行了外部的数据操作,该怎么让数据操作完毕后再继续执行delphi里面的代码
delphi调用WinExec或ShellExecute执行了外部的数据操作,该如何让数据操作完毕后再继续执行delphi里面的代码
新人一枚,求大神讲解。
------解决方案--------------------
------解决方案--------------------
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;
新人一枚,求大神讲解。
------解决方案--------------------
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;