CreateProcess und Anführunsstriche



  • Ich habe hier ein sehr kurioses Problem:
    In der msdn wird erwähnt, das man, sollte man Prozesse starten die sich in einem Verzeichnis befinden das leerzeichen enthält, den Pfad in Anführungsstriche setzen sollte. Beispiel: "\"c:\\dokumente und einstellungen\\calc.exe\""

    Folgender Code will jedoch nicht den Prozess starten, wenn der String in dieser Form ist, sonder geht nur, wenn wenn der Pfad nicht von Anführungszeichen umschlossen wird und der String wie folgt aussieht: "c:\\dokumente und einstellungen\\calc.exe" . Das steht jedoch im Widerspruch zur msdn, wo in solchen Fällen Anführungszeichen dringend empfohlen werden. Nun meine Frage: Was mach ich falsch?

    CreateProcess( "\"c:\\dokumente und einstellungen\\calc.exe\"", 
    		NULL,				// 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.
        )
    


  • Mich würde ja mal wirklich interessieren wo das in der msdn steht. Geht es da nicht vielleicht doch um Kommandozeile&Co?



  • Ich glaub die meinen, man soll quoted strings verwenden, wenn man lpApplicationName auf NULL setzt und den exe-Pfad in der lpCommandLine mit angibt...
    Zumindest funktionieren quoted strings bei lpCommandLine...



  • Genau dann funzt es, hab ich jetzt auch rausgefunden. Um aber nochmal die msdn zu zitieren, da es ja anscheinend einige Leute nicht glauben:

    [msdn]
    lpApplicationName
    [in] Pointer to a null-terminated string that specifies the module to execute.
    ....
    If you are using a long file name that contains a space, use quoted strings to indicate where the file name ends and the arguments begin; otherwise, the file name is ambiguous.
    ....
    [/msdn]

    Ich mag mich irren, aber da steht eindeutig das man bei Pfadangaben mit Leerzeichen Anführungszeichen verwenden soll.



  • mußt mal den satz davor lesen, das gildet nur in lpCommandLine. Wenn du Appname auf NULL setzt und Pfad/Application in lpCommandLine setzt sollst du das quoten



  • Wuha, man du solltest den Link posten, auf die Seite in der msdn. Mit 2 mal [...] und ohne Kontext ist das sonst ziemlich aussagelos. Und offensichtlich bezieht sich dieser Satz ja auch auf was anderes.



  • MSDN: CreateProcess

    Probleme, die MSDN/Google (Suchwort: CreateProcess MSDN) selbst zu bedienen, oder warum brauchste da nen Link hin?



  • Google??? ist das nicht nen Kuchen von MSDN (Münchener Sahne Dorten Nacher)
    Was hat das mit WinAPI zu tun? Die WinAPI Doku giebt es doch als helpFile auf meinem Rechner!

    😃


Anmelden zum Antworten