AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Kommandozeilenprogramm aus Delphi heraus starten
Thema durchsuchen
Ansicht
Themen-Optionen

Kommandozeilenprogramm aus Delphi heraus starten

Ein Thema von benst · begonnen am 24. Jun 2006 · letzter Beitrag vom 24. Jun 2006
Antwort Antwort
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#1

Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 16:28
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 18:21
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
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#3

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 21:51
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:
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;
Was mache ich falsch?
Danke
Gruß
Ben
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#4

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 21:56
Hi.

Zitat von benst:
Was mache ich falsch?
Wo rufst du in dem Code überhaupt ShellExecute auf?

So würd' ich's machen:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
  ShellExecute(Handle, 'open', 'P:\fad\Zur\convert.exe', 'e:\a.jpg e:\a.pdf', 'e:', SW_SHOW);
end;
PS: Statt SW_SHOW kannst du auch SW_HIDE einsetzen, dann wird's nicht angezeigt.
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#5

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 22:13
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
  Mit Zitat antworten Zitat
Waldteufel
(Gast)

n/a Beiträge
 
#6

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 22:15
Zitat von benst:
Wie kann ich das verhindern?
So:
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;
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#7

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 22:30
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
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 22:38
Zitat von benst:
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. ??
Dann sollte es eigentlich auch so gehen - oder tut es das nicht?
Bei 'cmd.exe' ist ja auch nicht der volle Pfad angegeben.
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
benst

Registriert seit: 20. Jun 2004
155 Beiträge
 
Delphi 5 Standard
 
#9

Re: Kommandozeilenprogramm aus Delphi heraus starten

  Alt 24. Jun 2006, 22:42
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz