-3
私はbatファイルを実行するのに役立つ以下の手順があります。私が必要とするのは、この手順が完了するまで、ユーザーが何かを作業することができない、ロードアイコンのようなものです。プロセスがDelphiで実行されている間にインターフェイスをブロックします
これに到達する方法はありますか?
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;
は何もしてからユーザーをブロックするために、モーダルフォームを表示します。 –
@DavidHeffernanですが、ユーザーはモーダルフォームを簡単に閉じることができます。 –
進捗状況です。ユーザーはキャンセルすることで閉じることができます。子プロセスを終了します。確かに 'ProcessMessages'を呼び出すことはあまりにもかわいいわけではありません。 –