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