Ich versuche, Prozess (calc.exe) zu erstellen, aber das Programm wird nicht ordnungsgemäß ausgeführt. Es stürzt nur nach dem Start ab. Ich denke, das Problem ist mit LPWSTR Variable, aber ich habe keine Ahnung, wie es zu beheben ist.CreateProcess fehlgeschlagen, unerwarteter Fehler
Unten ist mein Code.
#include "stdafx.h"
#include <Windows.h>
#include <cstdio>
#include <string>
using namespace std;
void NewProcess(LPWSTR cmd) {
printf("Argv Inside funcion: %s\n", cmd[1]);
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
if (!CreateProcess(NULL,
cmd,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi)
)
{
printf("CreateProcess failed (%d).\n", GetLastError());
return;
}
printf("Process ID: %d Started", pi.dwProcessId);
WaitForSingleObject(pi.hProcess, INFINITE);
printf("\nProcess ID: %d Terminated!", pi.dwProcessId);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
}
void main(int argc, TCHAR *argv[])
{
char text[] = "calc.exe";
wchar_t wtext[20];
mbstowcs(wtext, text, strlen(text) + 1);
LPWSTR ptr = wtext;
NewProcess(ptr);
getchar();
}
C und C++ aren‘ t die gleichen Sprachen. Markieren Sie nur mit dem entsprechenden Tag. – tambre
Genau wo stürzt es ab? Wenn Sie das Programm unter einem Debugger ausführen, sollte es Ihnen die genaue Codestelle und die Folge von Funktionsaufrufen mitteilen, die zu diesem Ort führen (Call-Stack). – zett42
Gelöst ... mein Schlechter. Sori. Das Problem war in wprintf ("Argv Inside Funktion:% s \ n", cmd [1]); Ich habe diese Zeile mit dem Editier-Code verpasst, und es gab ein Problem mit cmd [1], weil cmd zuvor Array war. – bielu000