Richtige Verwendung von Parametern bei ShellExecute
-
ich versuche die ganze Zeit einen Befehl mit Shellexecute auszuführen.
Der Befehl als ganzes (Funktioniert mit system) lautet:
Test.exe < testquelle.c > testquelleneu.c
Mein Aufruf von ShellExecute lautet nun:
ShellExecute(NULL,"open","Test.exe"," < testquelle.c > testquelleneu.c","C:\\Testprogramm\\",SW_SHOW);
Die Test.exe wird aufgerufen, aber das mit den Shiften (< und >) klappt nicht.
Woran könnte das liegen?Gruß Paddy
-
Paddy82 schrieb:
Woran könnte das liegen?
Das könnte daran liegen, dass die Umleitungsanweisungen nicht als Parameter an Test.exe geschickt werden dürfen, sondern an die ausführende Shell übergeben werden müssen.
-
Wie kann ich das denn machen?
Geht das überhaupt mit ShellExecute?
-
Du könntest mit ShellExecute direkt die Shell starten und der die Parameter übergeben, bei cmd.exe z.B. mit /C oder /K. Oder du benutzt CreateProcess, da kannst du die Standardhandles direkt umleiten.
-
ich habe mich jetzt für die Alternative mit Create Process entschieden.
in der Struktur STARTUPINFO gibt es drei Handles für die StdStreams:
typedef struct _STARTUPINFO { DWORD cb; LPTSTR lpReserved; ... HANDLE hStdInput; HANDLE hStdOutput; HANDLE hStdError; } STARTUPINFO, *LPSTARTUPINFO;
Wie kann ich denn nun meine Dateien dort angeben?
HANDLE meinInput; meinInput = "C:\\Testprogramm\\testquelle.c"; STARTUPINFO si; si.hStdInput = meinInput;
So funktioniert es leider auch nicht
-
Ein HANDLE auf eine Datei bekommst du üblicherweise mit CreateFile.