我有以下程序帮助我执行bat文件。我需要的是,当调用此过程时,直到它完成,以便用户无法处理任何事情,例如加载图标..
有关如何达到此目的的任何想法吗?
procedure RunAnalysis(ACommandLine: string);
var
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
begin
FillChar(StartupInfo, SizeOf(StartupInfo), 0);
StartupInfo.cb := SizeOf(TStartupInfo);
UniqueString(ACommandLine);
if CreateProcess(nil, PChar(ACommandLine), nil, nil, False,
0, nil, nil, StartupInfo, ProcessInfo) then
begin
while WaitForSingleObject(ProcessInfo.hProcess, 10) > 0 do
Application.ProcessMessages;
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end
else
RaiseLastOSError;
end;
答案 0 :(得分:0)
您可以通过点击按钮调用您的程序并禁用您的表单直到完成:
procedure yourform.Button1Click(Sender: TObject);
var Bat:string;
begin
Bat:={yourCommandLine};
yourform.Enabled:=false;
RunAnalysis(Bat);
yourform.Enabled:=true;
end;