CreateProcess for runaways

Diskutiere CreateProcess for runaways im Developer Network Forum im Bereich Hardware & Software Forum; Ich einen alten Fortran.exe geerbt. Der Besitzer startet so, direkt im DOS Fenster: MyFortran.exe 1>test.out 2>test.log und dann tippt er...
  • CreateProcess for runaways Beitrag #1
R

Riedi

Neues Mitglied
Dabei seit
01.12.2008
Beiträge
4
Reaktionspunkte
0
Ort
Bodensee
Ich einen alten Fortran.exe geerbt.
Der Besitzer startet so, direkt im DOS Fenster:
MyFortran.exe 1>test.out 2>test.log
und dann tippt er
"input.txt"
"test"
beide mit CR.

Ich muss das aus C++ nachmachen.

Ich kann ein Batchdatei schreiben:
.\MyFortran.exe 1>test.out 2>test.log <params.txt
wo params.txt folgendes enthält:
input.txt
test

Dann sieht der Fortran input.txt aber nicht test.

In C++ komme ich nicht einmal so weit.
fSuccess = CreateProcess((LPTSTR)NULL,
"MyFortran.exe 1>test.out 2>test.log input.txt test",
usw usw

läuft, aber wartet bei WaitForSingleObject mit einem DOS Fenster auf die zwei CR. Ich habe alle möglichen Kombinationen ausprobiert. Es geht nicht. Was soll ich noch wissen? Wie kann ich Parameter an einen Prozess geben? Ich darf am Fortran nix ändern.
 
  • CreateProcess for runaways Beitrag #2
Max11.111

Max11.111

Bekanntes Mitglied
Dabei seit
12.06.2008
Beiträge
2.416
Reaktionspunkte
0
[...]Ich einen alten Fortran.exe geerbt.[...]
16 Bit oder 32?
MSDN schrieb:
If the executable module is a 16-bit application, lpApplicationName should be NULL, and the string pointed to by lpCommandLine should specify the executable module as well as its arguments.



[...]
Ich muss das aus C++ nachmachen.

Ich kann ein Batchdatei schreiben:
.\MyFortran.exe 1>test.out 2>test.log <params.txt
wo params.txt folgendes enthält:
input.txt
test

Dann sieht der Fortran input.txt aber nicht test.
Stehen die Befehle in der Datei so
Code:
input.txt
test
oder so
Code:
input.txt test
?

Meines Erachtens ist
Code:
[B]input.txt test[/B]
richtig, man trennt ja auch direkt in der Konsole die Parameter nur durch ein " " (Leerzeichen) und jede Zeile ein neuer Befehl steht.



[...]
In C++ komme ich nicht einmal so weit.
fSuccess = CreateProcess((LPTSTR)NULL,
"MyFortran.exe 1>test.out 2>test.log input.txt test",
usw usw

läuft, aber wartet bei WaitForSingleObject mit einem DOS Fenster auf die zwei CR. Ich habe alle möglichen Kombinationen ausprobiert. Es geht nicht. Was soll ich noch wissen? Wie kann ich Parameter an einen Prozess geben? Ich darf am Fortran nix ändern.
MSDN schrieb:
BOOL WINAPI CreateProcess(
__in_opt LPCTSTR lpApplicationName,
__inout_opt LPTSTR lpCommandLine,
__in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes,
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in BOOL bInheritHandles,
__in DWORD dwCreationFlags,
__in_opt LPVOID lpEnvironment,
__in_opt LPCTSTR lpCurrentDirectory,
__in LPSTARTUPINFO lpStartupInfo,
__out LPPROCESS_INFORMATION lpProcessInformation
);
also:
fsuccess = CreateProcess(
"Fortaran.exe",
"1>test.out 2>test.log <params.txt",
NULL,
FALSE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
EXTENDED_STARTUPINFO_PRESENT,
/*A pointer to a PROCESS_INFORMATION structure that receives identification information about the new process.

Handles in PROCESS_INFORMATION must be closed with CloseHandle when they are no longer needed.*/);​
 
  • CreateProcess for runaways Beitrag #3
R

Riedi

Neues Mitglied
Dabei seit
01.12.2008
Beiträge
4
Reaktionspunkte
0
Ort
Bodensee
Nee, das habe ich schon alles probiert. Es muss 16-bit sein, weil wenn der lpApplicationName nicht NULL ist, gibt CreateProcess einen Fehler zurück.

Was ich gerade jetzt probiere:
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
...
SI.hStdOutput = hStdOut;
CString csP1 = "input.dat\n";

SetConsoleMode( hStdOut,ENABLE_PROCESSED_OUTPUT);
if (!WriteConsole(hStdOut, csP1, 10, lpw, NULL))
usw
das gibt mir Fehlermeldung 12 "ERROR_INVALID_ACCESS" aber...
es schreibt tatsächlich in mein ConsoleFenster, mit CR, aber fortran.exe wartet immer noch, sieht es also nicht.

Bin ich hier am richtigen Weg?

Was ich hätte sagen sollen: fortran.exe erwartet 2 Tastatureingaben also auf UNIT=5, falls du dich da auskennst...
 
Zuletzt bearbeitet:
  • CreateProcess for runaways Beitrag #4
R

Riedi

Neues Mitglied
Dabei seit
01.12.2008
Beiträge
4
Reaktionspunkte
0
Ort
Bodensee
selber gelöst (mit etwas Hilfe von MSDN);

Hier ist die Lösung in MSDN Help (war eigentlich ein Link...)
Creating a Child Process with Redirected Input and Output

Das macht ein ChildProcess mit einem Pipe für Ein- und Ausgabe. Man füllt Data in die Pipe mit WriteFile, in meinem Fall mit 2-mal WriteFile in einem Pipe. Der Child Process macht dann CreateProcess für mein exe. Ganz einfach!
 
  • CreateProcess for runaways Beitrag #5
F

flowerpower84

Bekanntes Mitglied
Dabei seit
17.04.2008
Beiträge
47
Reaktionspunkte
0
ich wollte bloß mal reinschnuppern, weil mich das programmieren an sich scho reizt, aber wahnsinn, ihr seid ja echt die meister schlechthin, oder ich bin einfach noch zu ahnungslos... aber sprachlos auf jeden!
habs mir anders überlegt, kann manches nachvollziehen, aber der input war mir echt schon zu hoch!
 
  • CreateProcess for runaways Beitrag #7
R

Riedi

Neues Mitglied
Dabei seit
01.12.2008
Beiträge
4
Reaktionspunkte
0
Ort
Bodensee
kriegt er wohl gesponsert...
 
  • CreateProcess for runaways Beitrag #8
F

flowerpower84

Bekanntes Mitglied
Dabei seit
17.04.2008
Beiträge
47
Reaktionspunkte
0
ups, erwischt *lachweg
ja ne, jeder post is wohl übertrieben... ich liebe hitmeister, bin quasi ein fan davon... nachdem, vielleicht auch weil ich schlechte erfahrung mit amazon und ebay gemacht habe... seht es als ein rachefeldzug!!!
die versprechen 100% sicherheit, und haben die mir gegenüber bis jetzt immer gehalten, bin voll zufrieden mit denen, und was amazon und ebay sich geleistet haben... ich HASSE!!! amazon und ebay
aber das neue design von hitmeister find ich net so prickelnd! :(
 
Thema:

CreateProcess for runaways

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.179
Beiträge
1.579.172
Mitglieder
55.878
Neuestes Mitglied
Satan666
Oben