C++ CreateProcess

  • Ich probiere im moment ein bisschen mit C++ herum und habe auch einige Tutorials gelesen.
    Nun versuche ich die GTA exe zu starten was leider nicht so ganz funktioniert.
    Im Taskmanager sehe ich zwar das der Prozess gestartet ist, aber es öffnet sich nichts.
    Mein Code:


    Code
    CreateProcess(TEXT("D:\\Programme\\GTA San Andreas\\gta_sa.exe"), NULL,  NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &StartupInfo, &ProcessInfo);


    Ich hoffe ihr könnt mir helfen

  • Ich probiere im moment ein bisschen mit C++ herum und habe auch einige Tutorials gelesen.
    Nun versuche ich die GTA exe zu starten was leider nicht so ganz funktioniert.
    Im Taskmanager sehe ich zwar das der Prozess gestartet ist, aber es öffnet sich nichts.
    Mein Code:


    Code
    CreateProcess(TEXT("D:\\Programme\\GTA San Andreas\\gta_sa.exe"), NULL,  NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &StartupInfo, &ProcessInfo);


    Ich hoffe ihr könnt mir helfen

    Ich habe damals eine ähnliche Funktion genutzt, um Filme zu starten.
    Versuche einmal folgendes:

    Code
    system("D:\\Programme\\GTA San Andreas\\gta_sa.exe");


    Theoretisch, sollte das selbe Ergebnis damit erzielt werden :)


  • Bist du denn auch sicher, dass der Pfad stimmt?


    Denn bei dir ist der Pfad:

    Code
    GTA San Andreas\\gta_sa.exe


    Wobei er doch (soweit ich weiß) so sein sollte:

    Code
    Rockstar Games\\GTA San Andreas\\gta_sa.exe


    Also:

    Code
    "D:\\Programme\\Rockstar Games\\GTA San Andreas\\gta_sa.exe"
  • http://msdn.microsoft.com/en-u…s682425%28v=vs.85%29.aspx.


    Geh nochmal deinen Aufruf durch und schau dir an, was jeder Parameter der Funktion macht. Dann solltest du drauf kommen. Eigentlich braucht man dafür die API-Dokumentation gar nicht, man muss sich nur nochmal die Zeile wirklich in Ruhe durchlesen und schauen, was da eigentlich steht:


    Code
    CreateProcess(TEXT("D:\\Programme\\GTA San Andreas\\gta_sa.exe"), NULL,  NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &StartupInfo, &ProcessInfo);


    Edit: Zu der "system()" Methode: Diese wird eigentlich nicht verwendet, da hierbei zuerst ein Shellprozess gestartet werden muss, der dann erst den Befehl ausführt. Das ist eine Resourcenverschwendung. Wer also in C auf Windows ein Programm starten möchte, sollte CreateProcess verwenden. ShellExecute ist auch eher zweite Wahl, da man dafür eigentlich auch immer COM initialisieren müsste.

    3 Mal editiert, zuletzt von oernqsvfu_fgvaxg ()