Daten von Formanwendung an Konsolenanweisung schicken PROCESS

Gast #3245417
Lesenswert?
• ▲
▼
Lars schrieb:
> ich möchte die Varibale int i = 122 von der Formsanwendung an die
> Konsolenanwendung übergeben.

so wird dann bestimmt nichts. Das Konsolenprogramm muss schon die 
Varible per input einlesen oder als Parameter übergeben bekommen.

Aber mit den wenigen Infos kann hier niemand weiter helfen.
Gast #3245428
Lesenswert?
• ▲
▼
1
private void button1_Click(object sender, EventArgs e)
2
        {
3
            Process JpegToSWF = new Process();

hier ist die EXe die ich ausführen will.

Nun sollte da noch die in der Formsanwendung global definierte Variable 
Variable i an die Konsolenanwendung jpegtoswf übergeben werden.
Gast #3245430
Lesenswert?
• ▲
▼
Lars schrieb:
> Nun sollte da noch die in der Formsanwendung global definierte Variable
> Variable i an die Konsolenanwendung jpegtoswf übergeben werden.

man kann keine Variabel übergeben, nur daten.

programm.exe i=5

dann musst du es nur noch in deinen konsolenprogram über ARG einlesen.
Gast #3245464
Lesenswert?
• ▲
▼
OK dann so
string argument = args[i];


Und als Output des Konsolenprogramms die Varibale i nach dem Process?
1
private void button1_Click(object sender, EventArgs e)
2
        {
3
            Process JpegToSWF = new Process();
4

5
jpegtoswf.exe i
Gast #3246068
Lesenswert?
• ▲
▼
Peter II schrieb:
> warum nicht, jedes Consolen programm hat doch einen input, output und
> error stream. Dort kann man daten reinscheiben bzw. auslesen.

Das geht immer, aber ein Konsolenprogramm unter Windows kann doch auch 
die Win32-API nutzen und damit alles was es so an 
Interprozess-Kommunikation gibt, Pipes, memory mapped files und und 
und....

Unter Linux sicher auch.

Gruss Reinhard
#3246329
Lesenswert?
• ▲
▼
@Lars:

Es gibt zillionen Möglichkeiten, das zu tun. Alles in allem fällt das 
unter IPC, was du gerne als Suchbegriff verwenden kannst, um mehr zu 
erfahren. Gibt's bestimmt auch eine Menge Beispiele für Windows in der 
Sprache deiner Wahl zu.
Wenn es wirklich nur um einen einzelnen Wert geht, ist die Übergage per 
Aufrufparameter sicherlich die Sinnvollste. Zurückgeben kannst du dann 
am einfachsten im stdout der Konsolenanwendung. IIRC kannst du 
CreateProcess() Pipes für die Standard-Streams des neuen Prozesses 
übergeben, um mit diesem zu kommunizieren.
Eventuell ist es sinnvoll, dafür zu sorgen, dass die Konsolenanwendung 
kein Fenster erzeugt. Das ist immer so hässlich unter Windows, wenn 
unvermittelt irgendwelche leeren (weil Inhalt per Pipes bearbeitet wird) 
Konsolen-Fenster aufpoppen. Die $USER dann evtl. auch noch schließen und 
so zu blöden Fehlern führen kann.

Reinhard Kern schrieb:
> Unter Linux sicher auch.

Klar.

int i = 122;
if (!fork()) {
  /* Nur noch die Standard-Streams verwenden. */
}

i behält übers Forken seinen Wert :D

*) Nein, das alleine bringt nichts, da fehlt mindestens ein wait() und 
überhaupt ist das so Käse.
Gast #3246627
Lesenswert?
• ▲
▼
Lars schrieb:
> Fehler
>
> Die Eingabezeichenfolge hat das falsche Format. string mengeanBildern =
> args[2];
>             int i = Convert.ToInt32(mengeanBildern);
>
> Wo ist denn da der Formatfehler?

kannst du überhaupt etwas von alleine? Woher sollen wir denn wissen was 
in den string mengeanBildern drin steht? scheinbar ja wohl keine Zahl.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren