E. Scott Larsen wrote:
Just FYI to this thread in general. It's been a while since I've messed with WinMain and command lines, but if my memory serves me right (it was at a different place, so I don't have the code here), there's some additional whacky issues here. WinMain recieves the first arguments differently depending on how it is run: *) from MSVC debugger *) from a commandline *) by clicking on an shortcut icon *) by clicking in an explorer window
I find this hard to believe, as WinMain is just given a pointer into the command line returned by GetCommandLine(), incremented past the program name and any following space.
don't remember which is which, but one gives just the executable name,
one gives the full path to the executable (seems like there's two variations on this, like one is quoted and one is not, don't remember the details), and it seems like there's one that doesn't give the executable at all.
I can imagine there's some variation in program name; it's normal for programs to be started with short names rather than their full filenames. The quoting is weird though; that should be removed before you see it.
Also, I _distinctly_ remember something very whacky when I used unicode, I don't remember the details, but the commandline arguments were a significant pain for a program built with unicode support using the unicode windows entry function. That still tastes bad in my mouth.
According to the docs, this ought to work: wchar_t ** argv; int argc; argv = CommandLineToArgvW(GetCommandLineW(), &argc); but I've never tried it; maybe it doesn't. If you were using WinCE then I feel your pain and hope you've recovered.