Warnmeldung und CreateProcess Vs. ShellExecute
-
Danke CMatt!!
CreateProcess funktioniert jetzt einwandfrei!!Ich habe die Parameter falsch eingegeben
Ich Falsch: : (
::CreateProcess("G:\\OrdnerTest\\CopyTest.bat", "Test Bla", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);Dank CMatt Richtig : )
::CreateProcess(NULL, "G:\\OrdnerTest\\CopyTest.bat Test Bla", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);Ich hätte trotzdem noch eine Frage. Ist es möglich mit dieser Funktion auch Errors vom aufgerufenen Programm zu empfangen und auswerten?
Gruß Dol
-
Kommt drauf an was du unter errors verstehst

Wenn dein 2. Programm bei nem Fehler die Artbeit einstellen soll und dein 1. das mitbeommen soll, gibt in der CWinAPP::ExitInstance nen fehlercode zurück. Im 1. Prog kommts dann ganz leicht GetExitCodeProcess an den Wert ran

-
Ich habe die Geschichte GetExitCodeProcess ausprobiert aber ich glaube, dass ich bei der Ganzen Geschichte noch einfach zuwenig Erfahrung habe.
Hier ist Mein Code:
Beim Kompilieren kommt folgende Fehlermeldung:'GetExitCodeProcess': Konvertierung des Parameters 2 von 'LPDWORD *__w64 ' in 'LPDWORD' nicht möglich
::PROCESS_INFORMATION pi ; ::STARTUPINFO si = {sizeof(si)}; si.wShowWindow = SW_NORMAL; ::CreateProcess(NULL, "G:\\Auftrag\\Projekt_JobHandler\\OrdnerTest\\CopyTest.bat Tes Bla", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi); ::WaitForSingleObject( pi.hProcess, INFINITE); ::LPDWORD ExitCode1; ::UINT ExitCode2; ::ExitProcess(ExitCode2); ::GetExitCodeProcess( pi.hProcess,&ExitCode1); ::CloseHandle(pi.hProcess); ::CloseHandle(pi.hThread); ::MessageBox( NULL,"done", NULL, 0);Und dann habe ich noch ein kleines Problem mit der CreateProcess Funktion. Wenn in der Pfadangabe ein Leerzeichen vorkommt, weißt die Funktion nicht wo die Parameter anfangen. Was kann ich da tun?
Das ist OK:
::CreateProcess(NULL, "G:\\OrdnerTest\\CopyTest.bat Tes Bla", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);Das geht nicht:
::CreateProcess(NULL, "G:\\Ordner Test\\CopyTest.bat Tes Bla", NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi);Danke im Voraus für Hilfe

Dol
-
DWORD ExitCode1;
-
und zum zweiten Problem:
"\"G:\\Ordner Test\\CopyTest.bat\" Tes Bla"
hab ich aber nicht getestet

-
Danke Unregistrierter : )
Die Beiden Tipps Funktionieren Super!!!
Jetzt habe ich noch ein Kleines Problem das wieder etwas mit den „Windows Date Types" zutun hat.
Error:
Run-Time Check Failure #3 - The variable 'ExitCode2' is being used without being defined.
::UINT ExitCode2; ::ExitProcess(ExitCode2);oder
Fehlermeldung:
error C2664: 'ExitProcess': Konvertierung des Parameters 1 von 'UINT *__w64 ' in 'UINT' nicht möglich
::UINT ExitCode2; ::ExitProcess(&ExitCode2);Was ist da nicht in Ordnung?
Gruß Dol
-
weise der Variablen ExitCode2 einen Wert zu. Sonst ist das Verhalten undefiniert.
bsp: UINT ExitCode2 = 42;
-
Es scheint noch nicht ganz zu klappen

Error:
Unbehandelte Ausnahme bei 0x7c29ed41 (mfc71d.dll) in Prozess.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0xf78c4cf8.
::UINT ExitCode2 = 42; ::ExitProcess(ExitCode2);Noch ne Idee?
Habt Geduld mit mir

-
Der Fehler liegt wahrscheinlich woanders.

-
Machs am besten nach dem Motto "Was nicht funktioniert wird auskommentiert".
-

-
lach schrieb:
Machs am besten nach dem Motto "Was nicht funktioniert wird auskommentiert".

-
Also das ExitProcess würde ich mir in ner MFC anwendung besser 10 mal überlegen. Das gibt nächlich der MFC nicht mehr viele möglichkeiten all ihren mit aufzuräumen

Beende lieber dein Prog auf normalen weg (mit ner WM_CLOSE z.B.) und gib den errorcode über deine WinApp zurück, wie ich oben geschrieben hab.
