Elbet birgün karşınıza çıkacaktır .bat dosyası ile haşır neşir olma olayı.
Bir dosya kopyalama işlemide olabilir fark edeceksiniz ki .bat dosyası çalıştırıldığı andan sonra delphi kodları devam etmektedir ve .bat dosyasının işleminin bitmesini beklemez.
Yine her zamanki gibi nette gezinirken bir kod parçası buldum ve tam olarak bu işe yaramaktadır .bat dosyasının işlemi biter ve delphi kodları öyle devam eder.
uses ShellAPI;
function TForm1.ShellExecute_AndWait(FileName: string; Params: string): bool;
var
exInfo: TShellExecuteInfo;
Ph: DWORD;
begin
FillChar(exInfo, SizeOf(exInfo), 0);
with exInfo do
begin
cbSize := SizeOf(exInfo);
fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
Wnd := GetActiveWindow();
exInfo.lpVerb := 'open';
exInfo.lpParameters := PChar(Params);
lpFile := PChar(FileName);
nShow := SW_SHOWNORMAL;
end;
if ShellExecuteEx(@exInfo) then
Ph := exInfo.hProcess
else
begin
ShowMessage(SysErrorMessage(GetLastError));
Result := true;
exit;
end;
while WaitForSingleObject(exInfo.hProcess, 50) <> WAIT_OBJECT_0 do
Application.ProcessMessages;
CloseHandle(Ph);
Result := true;
end;
Kullanımı:
ShellExecute_AndWait('BatYolu','');
Hiç yorum yok:
Yorum Gönder