[C]EXE mit parametern ausführen

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

[C]EXE mit parametern ausführen

Beitrag von Ostrich » So Okt 05, 2014 1:37 pm

hallo ich
Möchte in meinem code (Programm) eine weitere Exe mit Parametern aufrufen.
Habe leider nichts brauchbares gefunden

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [C]EXE mit parametern ausführen

Beitrag von cloidnerux » So Okt 05, 2014 1:56 pm

Wir haben dazu was im Tutorial:
http://www.proggen.org/doku.php?id=c:tutorial:params

So wird auch das mit dem "auf die Exe ziehen" aus deinem anderen Post erschlagen, wenn ich mich richtig errinere.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Re: [C]EXE mit parametern ausführen

Beitrag von Ostrich » Mo Okt 06, 2014 1:34 pm

Hi
Super dank dir, dann werde ich mich damit mal befassen

Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Re: [C]EXE mit parametern ausführen

Beitrag von Ostrich » Mo Okt 06, 2014 1:59 pm

Hi
mit dn parameern und das schieben auf die kompilierte exe klappt super.
danke
ich gehe davon aus, das die Sortierung welches Argument Nr. 1 ist Alphabetisch erfolgt (also wenn ich 2 dateien drauf schiebe)

Aber meine eigentliche Frage hier war. wie ufe ich in meinem Programm z.B. Notepad.exe (oder ein eigenes) auf. und das dann mit argumenten
ShellExecute hab ich gefunden. Aber gibt es noch was anderes?

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [C]EXE mit parametern ausführen

Beitrag von cloidnerux » Mo Okt 06, 2014 2:56 pm

Aber meine eigentliche Frage hier war. wie ufe ich in meinem Programm z.B. Notepad.exe (oder ein eigenes) auf. und das dann mit argumenten
ShellExecute hab ich gefunden. Aber gibt es noch was anderes?
Die Funktion "system" sollte das können:
http://www.cplusplus.com/reference/cstdlib/system/
Redundanz macht wiederholen unnötig.
quod erat expectandum

Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Re: [C]EXE mit parametern ausführen

Beitrag von Ostrich » Mo Okt 06, 2014 3:54 pm

Hi danke ja klappt soweit gut. jetzt noch eine erweiterung
In dem ordner meines Programms ist ein ordner \\Tools\ in dem das Prog Notepad.exe enthalten ist. das wollte ich öffnen.
Aber so funktioniert es nicht:

Code: Alles auswählen

//system(\Tools\"Notepad.exe filename filename");
Habe dann versucht das Arbeitsvezeichnis auf diesem weg zu wehcseln.

Code: Alles auswählen

char Verzeichnis[900];

getcwd(Verzeichnis,sizeof(Verzeichnis));
printf("Das aktuelle Arbeitsverzeichnis ist:\n%s\n",Verzeichnis);

chdir("%s\\Tools\",Verzeichnis);

//system("Notepad.exe");
klappte aber auch nicht

er hat anscheinend ein problem mit dem hier

Code: Alles auswählen

chdir("%c\\Tools\",Verzeichnis);
Unknown escape sequence \T kommt vom kompiler


Vielen dank für die Hilfe bisher. Mir gefällt, das hier nicht unnötige kommentare wie in den Anderen Foren kommen.
Dort wäre ich shcon gefragt worden: "Warum ich Notepad nicht so öffne"

DANKE

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [C]EXE mit parametern ausführen

Beitrag von cloidnerux » Mo Okt 06, 2014 4:15 pm

er hat anscheinend ein problem mit dem hier

Code: Alles auswählen

chdir("%c\\Tools\",Verzeichnis);

Unknown escape sequence \T kommt vom kompiler
Laut Doku kann chdir keine Textersetzungen à la %s.
Du musst dir erst deinen Text zusammen bauen:

Code: Alles auswählen

char text[100];
sprintf(text, "%s\\Tools", toolDir);
chdir(text);
Anscheinend ist bei dir irgendwas mit den Backslashes(\) nicht richtig. In Strings musst du immer zwei Backslashes machen, damit es im Text als einer erkannt wird, da der backslash als "Escape" Zeichen genutzt wird, um besondere Zeichen(\n neue Zeile, \r ein Zeichen zurück) darzustellen.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Ostrich
Beiträge: 23
Registriert: Fr Okt 03, 2014 2:57 pm

Re: [C]EXE mit parametern ausführen

Beitrag von Ostrich » Mo Okt 06, 2014 4:19 pm

Hi

weitere Punkt wo ih hänge. ich möchte Parameter übergeben, die in einer variablen gespeichert sind (z.B. ein dateiname, den ich übergeben möchte)

Bsp. ich habe ein programm, was bmp in png convertiert, dies möchte ich ausführn und Parameter übergeben

Code: Alles auswählen

    printf ("Bitte Quelldatei angeben: \n");

   scanf( "%s", &filename[0] );   // Adresse des ersten Buchstabens
    printf( "Sie gaben folgenden String ein: %s\n", filename );

system("convert.exe filename filename.png");
klappt auch nicht.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: [C]EXE mit parametern ausführen

Beitrag von cloidnerux » Mo Okt 06, 2014 4:47 pm

Bsp. ich habe ein programm, was bmp in png convertiert, dies möchte ich ausführn und Parameter übergeben

Code: Alles auswählen

    printf ("Bitte Quelldatei angeben: \n");

   scanf( "%s", &filename[0] );   // Adresse des ersten Buchstabens
    printf( "Sie gaben folgenden String ein: %s\n", filename );

system("convert.exe filename filename.png");

klappt auch nicht.
An dieser Stelle kommt der obligatorische Link: http://www.proggen.org/doku.php?id=faq:frageformulieren
Ich weiß nicht was du versuchst, aber in deinem Code machst du Folgendes:
Einen Text in eine Variable einlesen, die "filename" heißt, diese Variable ausgeben und dann einen cmd-Aufruf mit folgendem Inhalt zu starten:
"convert.exe filename filename.png"

Ich gehe mal davon aus, dass du hier statt "filename" den Inhalt der Variablen "filename" ausgeben wolltest.
Dafür musst du aber den Inhalt in einen Text kopieren, auch hier hilft dir wieder sprintf:

Code: Alles auswählen

char command[200];
char filename[200];
sprintf(command, "convert.exe %s %s.png", filename, filename);
system(command);
Programmieren bedeutet einer Maschine Anweisungen zu geben. Und wenn du sie nicht Anweist, den Inhalt aus einem Text an eine bestimmte Stelle in einem anderen Text zu kopieren, dann wird es auch nicht gemacht.
Bitte denke immer erst darüber nach, ob das was du Programmierst auch sinn macht.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten