![]() |
Kommandozeilenprogramm aus Delphi heraus starten
Hi,
ich möchte ein anderes Programm (Kommandozeilen-Programm - ImageMagick) aus Delphi heraus starten: Beispiel: convert 01.jpg 02.jpg all.pdf Dazu einige Fragen: - Wie mache ich das am besten? Soll ich dafür ShellExecute verwenden? - In der Eingabeauforderung von Windowskann man maximal ca. 255 Zeichen eingeben (so weit ich weiß), wie kann ich das umgehen, wenn ich mehr Parameter übergeben möchte? Gruß Ben |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Hi Ben,
kannst ruhig ShellExecute() oder seinen jüngeren Bruder ShellExecuteEx() verwenden. Irgendwelche Limits des Tastaturpuffers müssen dich dabei nicht kümmern. Die CommandLine (Parameter) darf 32K einnehmen, aber Vorsicht: unter Win9X ist das Limit 1K. Viele Konsol-Programme unterstützen einen aus CP/M-Zeiten bekannten Trick, bei dem eine Liste von Dateinamen in einer Textdatei hinterlegt wird und dem Programm mit dem Schalter @ übergeben wird. CONVERT scheint diese Tugend nicht zu besitzen. Grüße vom marabu |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Mein Versuch klappt nicht:
Ich möchte das gleiche bewirken, als wenn ich in der Eingabeaufforderung convert e:\a.jpg e:\a.pdf schreibe.
Delphi-Quellcode:
Was mache ich falsch?
procedure TForm1.Button3Click(Sender: TObject);
var OperationAlsPChar, DateiAlsPChar, ParameterAlsPChar, VerzeichnisAlsPChar : Array [0..79] of Char; begin (OperationAlsPChar,'open'), StrPCopy(DateiAlsPChar,'convert'),StrPCopy(ParameterAlsPChar,'e:\a.jpg e:\a.pdf'), StrPCopy(VerzeichnisAlsPChar,'e:'),0); end; Danke Gruß Ben |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Hi. :hi:
Zitat:
So würd' ich's machen:
Delphi-Quellcode:
PS: Statt SW_SHOW kannst du auch SW_HIDE einsetzen, dann wird's nicht angezeigt.
procedure TForm1.Button3Click(Sender: TObject);
begin ShellExecute(Handle, 'open', 'P:\fad\Zur\convert.exe', 'e:\a.jpg e:\a.pdf', 'e:', SW_SHOW); end; |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Sorry, ja natürlich... Habe das auch so. Aber beim Kopieren des Codes hierher ist es verloren gegangen. :)
Das Problem ist, dass das "Dos-Fenster" sofort wieder zu ist und ich keine Meldung lesen kann. Wie kann ich das verhindern? Gruß Ben |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Zitat:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin ShellExecute(Handle, 'open', 'cmd.exe', '/C "P:\fad\Zur\convert.exe e:\a.jpg e:\a.pdf && pause > nul"', 'e:', SW_SHOW); end; |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Ich habe das Programm jetzt zum Laufen bekommen.
Ich musste den vollständig Programm-Pfad angeben. Aber warum? In der Eingabeaufforderung funktioniert es auch aus jedem Verzeichnis heraus, weil entsprechende Umgebungsvariablen gesetzt sind. ?? Das Fenster wird jedoch leider immer noch geschlossen - trotzdeiner Erweiterung. Gruß Ben |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Zitat:
Bei 'cmd.exe' ist ja auch nicht der volle Pfad angegeben. |
Re: Kommandozeilenprogramm aus Delphi heraus starten
Funst alles prima.
Ich musste anstelle von /C /K schreiben. Mit convert ohne Pfadangabe gibt es Probleme wenn ich mein Programm aus der Delphientwicklungsumgebung heraus starte, wenn ich es alleine starte funst es. Vielen Dank Ben |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz