Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
C# Auslesen von Daten von einem Fremdprogramm
- Ersteller derbe
- Erstellt am
Was dir hier helfen sollte ist: RedirectStandardOutput
Also externes Programm aus C# heraus starten und das entsprechende Flag in der Startinfo setzen. Dann kannst Du den Output parsen.
Google einfach mal danach dann sollten sich einige Beispiele finden.
Also externes Programm aus C# heraus starten und das entsprechende Flag in der Startinfo setzen. Dann kannst Du den Output parsen.
Google einfach mal danach dann sollten sich einige Beispiele finden.
- Registriert
- Aug. 2013
- Beiträge
- 1.777
bif81 schrieb:Was dir hier helfen sollte ist: RedirectStandardOutput
Also externes Programm aus C# heraus starten und das entsprechende Flag in der Startinfo setzen. Dann kannst Du den Output parsen.
Google einfach mal danach dann sollten sich einige Beispiele finden.
Ich dachte das würde nur für CMD gehen? Geht das auch mit "jedem" anderen Programm?
Ja geht nur für console programme. Ich hab das "ähnlich" überlesen. Dachte es ist ein normales console prog. Wenn Du keinen Output hast, wirst Du auch nichts parsen können. Gibt es evtl eine api zu dem Prog? Dann würde ich es damit probieren. Sonst sehe ich da schwarz.
lynxx
Lt. Junior Grade
- Registriert
- Feb. 2005
- Beiträge
- 458
Das geht recht einfach:
Code:
using System;
using System.Diagnostics;
using System.IO;
class Program {
static void Main() {
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:\MeinProgram.exe";
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start)) {
// Lesen allen Text from Process und gib ihn in der Console aus (als Beispiel)
using (StreamReader reader = process.StandardOutput) {
string result = reader.ReadToEnd();
Console.Write(result);
}
}
}
}
- Registriert
- Aug. 2013
- Beiträge
- 1.777
Ich werde es heute Abend mal testen, danke. OCR wäre auch ne Möglichekeit würde es allerdings gerne "sauber" lösen.
€: Um es nochmal klar zu stellen, es "sieht" optisch aus wie ein CMD Programm (Dosbox).
Ist allerdings eine "normale" exe Datei.
€: Um es nochmal klar zu stellen, es "sieht" optisch aus wie ein CMD Programm (Dosbox).
Ist allerdings eine "normale" exe Datei.
xDderbe schrieb:€: Um es nochmal klar zu stellen, es "sieht" optisch aus wie ein CMD Programm (Dosbox).
Ist allerdings eine "normale" exe Datei.
Das mit dem Umleiten klappt soweit ich weiß nur, wenn man das Konsolenfenster auch direkt startet. Aus deinem vorherigen Thread (der sich jetzt im Aquarium befindet) ging hervor, dass dieses aber von einem anderen Programm aufgerufen wird. Falls du irgendwelche Parameter angeben kannst, lass dir die Ausgabe in eine Datei umleiten.
Ansonsten: ReadProcessMemory
In C++ zumindest (ja kenne mich in C# nicht wirklich aus) kann man damit zumindest auf den Speicher anderer Anwendungen zugreifen. Google spuckt da aber auch etwas im Zusammenhang mit C# aus.
- Registriert
- Aug. 2013
- Beiträge
- 1.777
S.Kara schrieb:xD
..
Ansonsten: ReadProcessMemory
In C++ zumindest (ja kenne mich in C# nicht wirklich aus) kann man damit zumindest auf den Speicher anderer Anwendungen zugreifen. Google spuckt da aber auch etwas im Zusammenhang mit C# aus.
Also es das andere "Programm" wird schon von der C# Anwendung gestartet, um es dann auszulesen. Das stimmt schon. Ich habe auch schon ne ganze Weile in Suchmachinen verbracht um das Problem zu lösen denke mir fehlen da wohl ehr die "Fachbegriffe". Zudem habe ich jetzt paar Lösungsansätze, die werde ich mal versuchen. Und werde berichten falls etwas davon für mich funktioniert.
Kanibal
Lt. Commander
- Registriert
- Dez. 2011
- Beiträge
- 1.032
Das RedirectStandardOutput klappt immer dann, wenn die Anwendung auf STDOUT schreibt (beispielsweise über printf, oder Console.log).
ReadProcessMemory klappt in C# genauso, ist aber extrem aufwendig und anfällig, da Du die Speicherstruktur des fremden Programmes kennen und interpretieren musst.
Für genauere Infos müsste man wissen, ob welches Programm es genau geht (Dosbox?). Eventuell sind nämlich Kommandozeilenparameter verfügbar, die explizit die Info-Ausgabe auf STDOUT aktivieren.
ReadProcessMemory klappt in C# genauso, ist aber extrem aufwendig und anfällig, da Du die Speicherstruktur des fremden Programmes kennen und interpretieren musst.
Für genauere Infos müsste man wissen, ob welches Programm es genau geht (Dosbox?). Eventuell sind nämlich Kommandozeilenparameter verfügbar, die explizit die Info-Ausgabe auf STDOUT aktivieren.
Ähnliche Themen
- Antworten
- 11
- Aufrufe
- 1.078
- Antworten
- 9
- Aufrufe
- 1.020
- Antworten
- 2
- Aufrufe
- 291