Returns
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern String GetCommandLine();
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
private static extern System.IntPtr GetCommandLine();
None.
If CharSet is not set to Auto in the DllImport attribute, then the call to GetCommandLine will only work the first time when using signature 1, and will not work at all using signature 2. This is on Windows XP using Framework 2.0.
Use this API function when you need access to raw command line string and not already parsed arguments in Main(string[] args)
If you use the signature1, P/Invoke marshaller will deallocate the returned string;
If you use the signature2, P/Invoke marshaller will NOT deallocate the returned string
string commandLine = GetCommandLine();
or
System.IntPtr ptr = GetCommandLine();
string commandLine = Marshal.PtrToStringAuto(ptr);
Do you know one? Please contribute it!