Kein Programmstart mit CreateProcess



  • Hallo,
    ich habe versucht mit CreateProcess ein Programm zu starten.

    #include <windows.h>
    #include <iostream.h>
    
    main()
    {
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    
    char eingabe[50];
    bool b;
    
    b = CreateProcess(NULL, "C:\\WINNT\SYSTEM32\\notepad.exe",
                     NULL, NULL, FALSE,
                     0,
                     NULL, NULL, &si, &pi);
    
    HANDLE hProc = OpenProcess(SYNCHRONIZE|PROCESS_TERMINATE, FALSE, pi.dwProcessId);
    
    cout << pi.hProcess << "   " << b << "   " << hProc;
    }
    

    b ist ständig 0. Ich kenne mich mit WinAPI noch nich so aus. Was mach ich falsch?
    Schon mal Danke für die Antworten.



  • Erstmal scheint mir da ein Backslash zu fehlen (C:\\WINNT\SYSTEM32\\notepad.exe), oder ist das ein Tippfehler hier im Forum?

    Was liefert GetLastError()?

    Zitat MSDN:
    If the function fails, the return value is zero. To get extended error information, call GetLastError.



  • Hepi schrieb:

    Erstmal scheint mir da ein Backslash zu fehlen (C:\\WINNT\SYSTEM32\\notepad.exe), oder ist das ein Tippfehler hier im Forum?

    Was liefert GetLastError()?

    Zitat MSDN:
    If the function fails, the return value is zero. To get extended error information, call GetLastError.

    GetLastError liefert 998 (???). Der einfache Backslash ist ein Tippfehler im Forum, im Programm ist es ein Doppelter.
    Wo ich gleich dabei bin. Ist es möglich mit CreateProcess andere Dateien, z.B. html oder txt aufzurufen (also wie bei ShellExecute)?



  • 998 - Unzulässiger Zugriff auf einen Speicherbereich.



  • wie wärs denn mal mit variablen initialisieren? 🙂

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );
    b = CreateProcess(NULL, "C:\\WINNT\SYSTEM32\\notepad.exe", 
                     NULL, NULL, FALSE, 
                     0, 
                     NULL, NULL, &si, &pi);
    

    (pi kann glaub weggelassen werden, si aber nicht!)



  • Funktioniert,

    Danke


Anmelden zum Antworten