Parameter #X aus der CmdLine extrahieren?



  • Ich will zB Parameter #1 aus der CmdLine haben (0 ist ja das Programm). In der Konsole ging das leicht via argv/argc. Doch hier bekomme ich die CmdLine nur als ganzes.

    Für eine Funktion wie CommandLineToArgvW() weiß ich nicht wieviel Speicher ich reservieren muss.

    Hilfe 😕

    MfG SideWinder



  • CommandLineToArgvW gibt es nur unter NT, aber schau dir mal das hier an



  • flenders schrieb:

    CommandLineToArgvW gibt es nur unter NT, aber schau dir mal das hier an

    Oha, das scheint ja ein direkt kompliziertes Unterfangen zu sein. Naja, danke für die URL - sollte in die FAQ!

    MfG SideWinder



  • Warum musst du vorher wissen, wieviel Platz du brauchst? Wenn ich das richtig sehe, reicht doch:

    int argc;
    LPWSTR *argv = CommandLineToArgvW(GetCommandLine(), &argc);
    


  • Öhm, und wo ist der Speicher für argv?

    MfG SideWinder



  • Tipp schrieb:

    In Visual C++ kannst du auch __argv und __argc verwenden.

    Hast du das auch gelesen?
    btw: die Forensuche funktioniert doch jetzt mal richtig gut, da muss doch nicht alles gleich in die FAQ 🙄



  • flenders schrieb:

    Tipp schrieb:

    In Visual C++ kannst du auch __argv und __argc verwenden.

    Hast du das auch gelesen?
    btw: die Forensuche funktioniert doch jetzt mal richtig gut, da muss doch nicht alles gleich in die FAQ 🙄

    Ja habe ich - bloß programmiere ich kein Visual C++. Habe einfach die Funktion dort etwas umgebastelt aus TCHAR* auto_ptr gemacht und fertig ;).

    MfG SideWinder



  • SideWinder schrieb:

    Öhm, und wo ist der Speicher für argv?

    Steht doch alles in der Doku:

    Return Values

    If the function succeeds, the return value is a non-NULL pointer to the constructed argument list, which is an array of Unicode strings.

    If the function fails, the return value is NULL. To get extended error information, call GetLastError.
    Remarks

    It is the caller's responsibility to free the memory used by the argument list when it is no longer needed. To free the memory, use a single call to the GlobalFree function.


Anmelden zum Antworten