CreateProcess () schlägt mit einer Zugriffsverletzung fehl [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Nicht behandelter Fehler mit CreateProcess [duplizieren] 2 Antworten

Mein Ziel ist es, eine externe ausführbare Datei in meinem Programm auszuführen. Zuerst habe ich verwendetsystem() Funktion, aber ich möchte nicht, dass die Konsole für den Benutzer sichtbar ist. Also habe ich ein bisschen gesucht und gefundenCreateProcess() Funktion. Wenn ich jedoch versuche, einen Parameter an ihn zu übergeben, weiß ich nicht, warum dies fehlschlägt. Ich habe diesen Code von MSDN genommen und ein bisschen geändert:

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void _tmain( int argc, TCHAR *argv[] )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    /*
    if( argc != 2 )
    {
        printf("Usage: %s [cmdline]\n", argv[0]);
        return;
    }
    */
    // Start the child process. 
    if( !CreateProcess( NULL,   // No module name (use command line)
        L"c:\\users\\e\\desktop\\mspaint.exe",        // Command line
        NULL,           // Process handle not inheritable
        NULL,           // Thread handle not inheritable
        FALSE,          // Set handle inheritance to FALSE
        0,              // No creation flags
        NULL,           // Use parent's environment block
        NULL,           // Use parent's starting directory 
        &si,            // Pointer to STARTUPINFO structure
        &pi )           // Pointer to PROCESS_INFORMATION structure
    ) 
    {
        printf( "CreateProcess failed (%d).\n", GetLastError() );
        return;
    }

    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );

    // Close process and thread handles. 
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}

Dieser Code verursachte jedoch irgendwie eine Zugriffsverletzung. Kann ich mspaint ausführen, ohne dem Benutzer die Konsole anzuzeigen?

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage