Komut satırı parametreleriyle programı çalıştırıyorum. Çalışmayı bitirmesi için nasıl bekleyebilirim?Komut satırı programının tamamlanması için nasıl bekleyebilirim?
cevap
Bu
cevabım ise: (teşekkür ederiz)
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;
WaitForSingleObject() yerine MsgWaitForMultipleObjects() kullanmalısınız, böylece Application.ProcessMessages() gereksiz yere çağırılmaz. Çok sık yapmak, döngü çalışırken uygulamanın performansını düşürebilir. –
Bunu bir iş parçacığında kullanacağım! UygulamaProcessMessages; silinecek ! – Kermia
MsgWaitForMultipleObjects gerçekten daha iyi bir çözüm olması muhtemeldir - sadece bu şekilde yaptıysanız sadece iş parçacığı için beklemek zorunda kalacaksınız! –
Ok, komut satırı parametrelerini almak sen
ParamCount
kullanın: komut satırında program geçirilen parametrelerin sayısını döndürür.
ParamStr
: dizine göre istenen belirli bir parametreyi döndürür. konsola metin satırı yazıyor: ne demek okuma ve konsola yazıyor eğer Running Dephi Applications With Parameters
Şimdi,
WriteLn
kullanın.
ReadLn
: Konsoldaki bir metin dizesini bir dize olarak okur. Ne istediğiniz bir komut satırı yürütülebilir yürütmek ve bu exe konsola yazar olduğunu yanıt almak için ise Delphi Basics
, en kolay yolu bir toplu iş dosyasından exe arayıp diğerine çıkışını yönlendirmek olabilir >
kullanarak dosya ve sonra bu dosyayı okuyun.
@echo off
dir c:\users\myuser\*.* > output.txt
API kullanarak bu toplu iş dosyasını exec olabilir: Eğer "dir" komutunu çalıştırmak ve çıkışını almak gerekirse
Örneğin, aşağıdaki içerdiğini getdir.bat
adlı bir toplu iş dosyası var olabilir ShellExecute işlevi. Sen Sonra hatta bir TStringList gibi bir şey kullanarak, çıktı dosyasını okuyabilir o http://delphi.about.com/od/windowsshellapi/a/executeprogram.htm
okuyabilirsiniz: Sorunuzu doğru anlamak
var
output: TStringList;
begin
output := TStringList.Create();
output.LoadFromFile('output.txt');
...
, komut satırında programını yürütmek ve yakalamak istediğiniz onun konsol penceresinde yerine uygulamanızda çıktı. Bunu yapmak için, çıkışı pipes kullanarak okuyabilirsiniz. Capture the output from a DOS (command/console) Window
DSiWin32 kullanma:
sl := TStringList.Create;
if DSiExecuteAndCapture('cmd.exe /c dir', sl, 'c:\test', exitCode) = 0 then
// exec error
else
// use sl
sl.Free;
- 1. Java 6/7 Komut Satırı Komut Satırı
- 2. Java programının adını alın
- 3. komut satırı
- 4. XTend için komut satırı derleyici
- 5. Ada sürümü için komut satırı?
- 6. io.popen - Lua'da işlemin tamamlanması nasıl beklenir?
- 7. Perl komut dosyamda bir şey yazılıncaya kadar nasıl bekleyebilirim?
- 8. Komut satırı aracı nasıl kumlanır?
- 9. Komut satırı girdisi nasıl doldurulur
- 10. Akka.Net'te tüm işlerin tamamlanması için nasıl beklerim?
- 11. R komut satırından komut satırı
- 12. Komut Satırı Arabirimi Scala
- 13. Windows komut satırı -
- 14. Komut Satırı, Netbeans
- 15. Haskell komut satırı uygulaması
- 16. TaskCanceledExceptions'ı atmadan nasıl görev bekleyebilirim?
- 17. Komut satırı "başlatılamadı yolu"
- 18. Numaralar için komut satırı girdisi ayrıştırma
- 19. SQLite komut satırı komut satırını hiçbir şey için
- 20. Komut satırı kullanımı için FFMPEG'yi derleyin
- 21. TFS komut satırı yardımı
- 22. Geçiş komut satırı parametreleri
- 23. Maven Komut Satırı Args
- 24. Neden JSON komut satırı
- 25. Komut Satırı Aracı?
- 26. CloudFormation için gerçek komut satırı istemcisi?
- 27. Unix ve Windows için komut satırı GUID?
- 28. Azure Webjobs için Komut Satırı Argümanları
- 29. C++, komut satırı düzgün
- 30. Bash sekmesi tamamlanması nasıl çalışır?
için çok açıktır Hangi soru söyleyemem İşte bir örnek kaynak kodu ben ... CLI 'girişi için' stdin 'gelir ve' çıktı' 'stdout’a (veya bazı durumlarda stderr') gider. Program davranışı için değiştirici olarak işlev gören parametreler –
Lütfen geçerli formun çok açık olmadığı için lütfen sorunuzu yeniden yazın. Ne için bekliyorsun? Uygulanan programın konsol çıkışı? Bu program tarafından gönderilen Windows mesajları? –
Kötü ingilizcem için özür dilerim! cevabı buldum. Bunu sayfanın altında görebilirsiniz! – Kermia