GetCommandLine (kernel32)
Last changed: -68.216.6.5

.
Summary

Returns

C# Signature1:

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]

private static extern String GetCommandLine();

C# Signature2:

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]

private static extern System.IntPtr GetCommandLine();

User-Defined Types:

None.

Notes:

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.

Tips & Tricks:

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

Sample Code:

string commandLine = GetCommandLine();

or

System.IntPtr ptr = GetCommandLine();

string commandLine = Marshal.PtrToStringAuto(ptr);

Alternative Managed API:

Do you know one? Please contribute it!

Documentation