_spawnlp(_P_NOWAIT, "%windir%\\notepad.exe", " ", NULL);



  • Hallo!

    Gibt es eine Erklärung dafür, dass

    Variante 1: _spawnlp(_P_NOWAIT, "%windir%\\notepad.exe", " ", NULL);

    nicht funktioniert (es passiert nämlich nichts), während

    Variante 2: _spawnlp(_P_NOWAIT, "C:\\Winnt\\notepad.exe", " ", NULL);

    durchaus funktioniert?

    Bin etwas ratlos. 😕



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ja. :p

    Umgebungsvariablen wie %windir% werden eigentlich von fast keiner Funktion expandiert, das musst du selbst machen.

    Ungetestet, als grobe Idee:

    const char * cwindir = getenv("windir");
    string windir = cwindir ? cwindir : ""; // oder anderer default-Pfad
    
    _spawnlp(_P_NOWAIT, (windir + "\\notepad.exe").c_str(), "", (char*)NULL);
    


  • Hallo! Danke für den Tipp. So hat's denn auch funktioniert (Anmerkung: ich benutze Qt, daher habe ich QString statt string verwendet):

    const char * cwindir = getenv("windir");
    QString windir = cwindir;
    windir.append("\\notepad.exe");
    _spawnlp(_P_NOWAIT, windir, " ", (char*)NULL);

    Ein Rätsel bleibt mir aber immer noch, dass das dritte Argument " " und nicht "" sein muss...

    Auf jeden Fall aber vielen Dank, der Tipp hat mir sehr geholfen! 👍


Anmelden zum Antworten