Problem mit CreateProcess
-
Hallo,
ich bin auf ein interessantes Problem mit CreateProcess gestoßen. Ich kann selbst erzeugte EXE-Dateien (mit Visual C++.NET erstellt) mit dem Befehl CreateProcess nicht starten. Andere Programme, wie z.B. 'Notepad.exe' lassen sich ohne Probleme öffnen.
Das Ergebnis von CreateProcess ist '1' und somit in Ordnung: "If the function succeeds, the return value is nonzero". Nebenbei bemerkt - GetLastError() gibt keinen Fehler zurück.
Der genaue Code ist folgender.
STARTUPINFO si = {sizeof(si)}; PROCESS_INFORMATION pi; CreateProcess("c:\\path\\pat.exe", NULL, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);Weiss jemand Rat? Aus lauter Verzweiflung habe ich mein Programm pat.exe sowohl in der Debug- als auch in der Release-Version generiert und mit CreateProcess versucht zu starten - selbes Resultat.
-
Hallo !
Probier doch mal aus, als ersten Parameter NULL zu übergeben und als zweiten deinen Pfad.
Tschüss
-
Habe es gerade ausprobiert - funktioniert aber nicht

Es funktioniert auch nicht mit 'system', 'WinExec' und 'ShellExecute'
ShellExecute(NULL,"open","c:\\path\\pat.exe",NULL,NULL,SW_SHOW); WinExec("c:\\path\\pat.exe", SW_SHOW); system("start c:\\path\\pat.exe");Wenn ich auf der Kommandozeile "c:\path\pat.exe" eingegebe, dann wird mein Programm ganz normal ausgeführt.
Hat jemand eine Idee?
-
versuch mal system und dann noch den header:
#include <stdlib.h> //The system function requires the STDLIB.H header file to be includedkann sein, daß deine command.com bzw. deine cmd nicht angesprochen werden..
nur so eine idee.dein nick schaut nach fernuni aus *grins*
-
...das funktioniert leider auch nicht...
Also, das einzige das mir noch einfällt ist, dass es daran liegt wie mein Programm pat.exe generiert worden ist. Nur hört es hier bei mir auf

Wie gesagt, ich freue mich über jeden Hinweis ...
-
...kleine Anmerkung noch.
Wenn ich WinExec benutze, dann ist der Rückgabewert = ERROR_LOCK_VIOLATION
"The process cannot access the file because another process has locked a portion of the file."
Jetzt bin ich noch mehr verwirrt als vorher...
-
q150022 schrieb:
...kleine Anmerkung noch.
Wenn ich WinExec benutze, dann ist der Rückgabewert = ERROR_LOCK_VIOLATION
"The process cannot access the file because another process has locked a portion of the file."
Jetzt bin ich noch mehr verwirrt als vorher...
noch im speicher von windows? bzw wurde schon gestartet aber nicht korrekt beendet?
-
q150022 schrieb:
Wenn ich WinExec benutze, dann ist der Rückgabewert = ERROR_LOCK_VIOLATION
Also hat's geklappt. Ein Blick in <winerror.h>:
#define ERROR_LOCK_VIOLATION 33LEin Blick in die Doku:
MSDN schrieb:
If the function succeeds, the return value is greater than 31.
Deine pat.exe lässt sich händisch aber einwandfrei starten, ja? Enthält der tatsächliche Pfad zur Exe zufälligerweise Spaces?
-
hi!
willst du die exe-datei aus sich selbst heraus starten? dann wärs kein wunder warum das nicht geht...ERROR_LOCK_VIOLATION
"The process cannot access the file because another process has locked a portion of the file."