Hallo allerseits! Das Problem ist folgendes, ich möchte ein Programm A aus einem Programm S heraus über die Kommandozeile starten und möchte dann wissen, ob Programm A das tut, was gestartet wurde. In Programm A gibt es Statusausgaben die ich dazu gerne abfangen würde. Leider gehen die nicht an die Standardausgabe/Kommandozeile sondern werden im Programm dargestellt, aber zumindest kann man einstellen, dass die Ausgabe in eine Datei erfolgen soll. Meine Frage ist jetzt, ob es möglich ist unter Windows einen Dateinamen anzugeben, der dann die Ausgabe in die Kommandozeile umleitet? Oder wäre es denkbar eine tatsächliche Datei zeitgleich durch Programm S auszulesen? Oder drittens, kann man in Windows evtl. eine Art virtuelle Datei anlegen, deren Schreib- und Leseoperationen direkt an ein eigenes Programm gehen? Oder hat jemand andere Ideen? Dass die Ausgangslage nicht gut ist, ist klar. Ich brauch aber schnelle eine einfache Lösung :) Danke!
Maxe schrieb: > Oder drittens, kann man in Windows evtl. eine Art virtuelle Datei > anlegen, deren Schreib- und Leseoperationen direkt an ein eigenes > Programm gehen? Ja, nennt sich "named pipe": https://learn.microsoft.com/en-us/windows/win32/ipc/named-pipes
Probiere es mal mit CON als Dateinamen. Das wird aber nur funktionieren, wenn das supergeheime Program (S wie Secret) die Ausgabe nicht puffert. Sonst kannst du die DLL Funktion fwrite verbiegen. Oder wenn das auch nicht geht, die EXE patchen.
Maxe schrieb: > In Programm A gibt es > Statusausgaben die ich dazu gerne abfangen würde. Leider gehen die nicht > an die Standardausgabe/Kommandozeile sondern werden im Programm > dargestellt, aber zumindest kann man einstellen, dass die Ausgabe in > eine Datei erfolgen soll. Ist das ein Konsolenprogramm, oder hat das eine GUI?
Udo K. schrieb: > Sonst kannst du die DLL Funktion fwrite verbiegen. Ein Beispiel wie das geht findest du hier: https://github.com/Microsoft/Detours/wiki/Using-Detours Michael
Udo K. schrieb: > Probiere es mal mit CON als Dateinamen. Werd ich machen, Danke! Harald K. schrieb: > Ist das ein Konsolenprogramm, oder hat das eine GUI? Ist ein GUI-Programm. (Vermutlich deshalb fehlt auch die Konsolenausgabe..) Michael D. schrieb: > Ein Beispiel wie das geht findest du hier: Sieht irgendwie kompliziert aus..
Erstaunlich wie kompliziert sowas unter veralteten Betriebsystemen gehandhabt wird. Bei modernen OS ist das Standard Benutzerwerkzeug. StdIn und StdOut sind einfach Dateien. Austauschbar mit anderen Schnittstellen wir, BT, Seriell, etc. MS ist für Masos. Mir läuft schon beim Gedanken an die Installation die Scheibe an.
> unter veralteten Betriebsystemen
Augenblick mal, das von dir beschriebene System stammt aus den Unix IV
von 1972.
Win schleppt immer noch Entscheidungen aus dem QDOS von 1980 mit sich
rum.
Das kompliziertere MS System ist moderner.
Xanthippos schrieb: >> unter veralteten Betriebsystemen > > Augenblick mal, das von dir beschriebene System stammt aus den Unix IV > von 1972. > > Win schleppt immer noch Entscheidungen aus dem QDOS von 1980 mit sich > rum. > > Das kompliziertere MS System ist moderner. Du verwechselst "Alter" und "Modernität". Nur weil Du Deinen Faustkeil heute herstellst, ist er dennoch nicht moderner als ein Sturmgewehr.
Xanthippos schrieb: > Das kompliziertere MS System ist moderner. Das ich nicht lache. Beweise? Leute wie Du halten Wissenschaft auch für eine Glaubensache. Dabei hast Du nicht gemerkt das, wie in der Bezeichnung schon herausgestellt, es um Wissen und nicht um Glauben geht.
Linux und Windows sind beide Modern, weil sie fortlaufend weiter entwickelt wurden und den aktuellen Stand der Technik darstellen. Welches OS zuerst entwickelt wurde, spielt für den Begriff keine Rolle mehr.
Maxe schrieb: > Ist ein GUI-Programm. (Vermutlich deshalb fehlt auch die > Konsolenausgabe..) Dann ist es auch kein Wunder, daß so etwas wie stdout/stdin nicht genutzt werden.
Maxe schrieb: > aber zumindest kann man einstellen, dass die Ausgabe in > eine Datei erfolgen soll. Wenn beide Programm nicht gerade gleichzeitig auf die Datei zugreifen, müßte das schon gehen. Vorausgesetzt, daß Programm A die Datei nach dem Schreiben ordentlich schließt und nicht erst beim Beenden.
Heinz B. schrieb: > Wenn beide Programm nicht gerade gleichzeitig auf die Datei > zugreifen, müßte das schon gehen. Vorausgesetzt, daß Programm A > die Datei nach dem Schreiben ordentlich schließt und nicht erst > beim Beenden. Das geht auch gleichzeitig, wenn OpenFile/CreateFile entsprechend benutzt wurden. https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea FILE_SHARE_READ https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-openfile OF_SHARE_DENY_READ
von Maxe schrieb: >aber zumindest kann man einstellen, dass die Ausgabe in >eine Datei erfolgen soll. Und den Inhalt dieser Datei willst du dann per Kommandozeile sichtbar machen? >der dann die Ausgabe in die Kommandozeile umleitet? Die Kommandozeile sieht dann so aus: type Datei.txt
Oder ist der Inhalt dieser Datei eine Kommandozeile die ausgeführt werden soll? Dann brauchst du die Datei nur "Datei.bat" nennen und in der Kommandozeile: Datei eingeben, dann wird die Kommandozeile die sich in Datei.bat befindet ausgeführt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.