Autor Beitrag
endlezzz
Hält's aus hier
Beiträge: 2

Win XP, Win Vista
C# (VS 2003), Java (Eclipse), C (VSDP++)
BeitragVerfasst: Di 03.02.09 13:36 
Hallo alle zusammen!

Habe da eine Frage.
Ich versuche einen Prozess aus meiner Applikation heraus zu starten (Probleme mit Schnittstellen welche bei einem Backup herunternfahren) und in diesem dann anschließend einige Befehle durch zu führen.

Hier ein kurzer Auszug aus dem Quellcode:

ausblenden C#-Quelltext
1:
2:
MQ=System.Diagnostics.Process.Start(MQ_info.getProcInfo());
StreamWriter mq_writer=MQ.StandardInput;


Die RedirectStandardInput und UseShellExecute habe ich beide entsprechend umgesetzt sodass ich den Prozess von meiner
Anwendung aus mit Befehlen versorgen kann (geschieht in einer anderen Klasse):

p_start.UseShellExecute=false;
p_start.RedirectStandardInput=true;

So nun zu meinem eigentlichen Problem.

Ich muss in dem Prozess welchen ich gestart habe, folgende Befehle abgeben:

ALT+D
I
E

Wie ich "I" und "E" schreiben kann ist mir andern für sich klar, allerdings habe ich das Problem dass ich nicht
weiß wie ich die Kombination (oder auch hintereinander) ALT+D absetzen kann, da ich keine Anhaltspunkte gefunden habe.

Danke mal im Voraus!

Mfg Alex

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Di 03.02.09 13:52 
Hallo und :welcome:

Den Zusammenhang zwischen dem Titel "StreamWrite / Prozess steuern" und der Frage "Befehl Alt+D abgeben" sehe ich nicht so richtig. Ich weiß deshalb nicht, ob ich eine passende Antwort geben, zumal Du zwar sagst, dass Du "I" und "E" schreiben kannst, aber nicht sagst, wie Du das machst.

Mein Hinweis bezieht sich auf die SendKeys.Send-Methode. In der SDK-Doku/MSDN wird erläutert, wie Sondertasten benutzt werden, insbesondere "%D" für Alt-D.

Ich hoffe, das wars, wonach Du gesucht hast.

Gruß Jürgen

PS 1. Arbeitest Du wirklich mit NET 1.1, oder ist das nur eine Standardeinstellung?

PS 2. Code-Beispiele sollten immer (auch bei ein oder zwei Zeilen) entsprechend gekennzeichnet werden: Text markieren, unter "Bereiche" die Code-Art, hier meistens C#, auswählen und mit dem Plus-Button bestätigen. Das kann durch Editieren (Button mit der Schere) auch nachträglich erledigt werden.
endlezzz Threadstarter
Hält's aus hier
Beiträge: 2

Win XP, Win Vista
C# (VS 2003), Java (Eclipse), C (VSDP++)
BeitragVerfasst: Di 03.02.09 14:35 
Also das Problem ist wie folgt:

Ich habe eine Anwendung A welche Schnittstellen laufen hat. Bei einem nächtlichen Backup der dazu gehörigen Datenbank stürzen mir diese allerdings ab, da sie die Verbindung verlieren. Um die Schnittstellen nun neu zu starten muss die gesamte Anwendung A neu gestartet werden.

Um dieses Problem zu beheben habe ich eine andere Anwendung geschrieben (Anwendung B), welche Anwendung A neu startet.
Dann hole ich mir den entsprechenden InputStream des Prozess als StreamWriter.

Soweit, so gut.

Nun um die Schnittstellen neu starten zu können muss ich die Tastenkombinationen:

ALT+D
I
E

an den entsprechenden Prozess (Anwendung A) aus meiner Anwendung B schicken/schreiben. Da ja der StreamWriter über .Write() verfügt kann ich ja Buchstaben problemlos schreiben.
Allerdings ist für mich nun das Problem wie schreibe ich ALT+D in den StreamWriter (Input Stream für den Prozess) ???

Danke vielmals!

Mfg Alex
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Di 03.02.09 17:09 
Sollte nicht noch jemand vorbeikommen, der das auswendig weiß :), musst du den Prozess eben in einem Beispielprogramm umkehren: Alt+D drücken und am StandardOutput horchen, was dafür herauskommt.

_________________
>λ=