commandLineToArgvW 函数 (shellapi.h)
分析 Unicode 命令行字符串,并返回指向命令行参数的指针数组,以及此类参数的计数,其方式类似于标准 C 运行时 argv 和 argc 值。
语法
LPWSTR * CommandLineToArgvW(
[in] LPCWSTR lpCmdLine,
[out] int *pNumArgs
);
参数
[in] lpCmdLine
类型: LPCWSTR
指向包含完整命令行的 以 null 结尾的 Unicode 字符串的指针。 如果此参数为空字符串,则函数返回当前可执行文件的路径。
[out] pNumArgs
类型: int*
指向接收返回的数组元素数的 int 的指针,类似于 argc。
返回值
类型: LPWSTR*
指向 LPWSTR 值数组的指针,类似于 argv。
如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。
注解
CommandLineToArgvW 返回的地址是 LPWSTR 值数组中第一个元素的地址;此数组中的指针数由 pNumArgs 指示。 指向 以 null 结尾的 Unicode 字符串的每个指针都表示在命令行上找到的单个参数。
CommandLineToArgvW 为指向参数字符串的指针和参数字符串本身分配连续内存块;当不再需要参数列表时,调用应用程序必须释放该内存。 若要释放内存,请使用对 LocalFree 函数的单个调用。
有关 argv 和 argc 参数约定的详细信息,请参阅 参数定义 和分析 C Command-Line 参数。
GetCommandLineW 函数可用于获取适合用作 lpCmdLine 参数的命令行字符串。
此函数接受包含程序名称的命令行;程序名称可以用引号引起来,也可以不用引号引起来。
当反斜杠字符后跟引号字符时,CommandLineToArgvW 对反斜杠字符有特殊解释 (“) 。 此解释假定前面的任何参数是有效的文件系统路径,否则它的行为可能不可预知。
此特殊解释控制分析程序跟踪的“引号”模式。 当此模式处于关闭状态时,空格将终止当前参数。 启用时,将像所有其他字符一样向参数添加空格。
- 2n 个 反斜杠,后跟引号生成 n 个反斜杠,后跟开始/结束引号。 这不会成为已分析参数的一部分,而是切换“用引号”模式。
- (2n) + 1 个反斜杠后跟引号再次生成 n 个反斜杠,后跟引号文本 (“) 。 这不会切换“用引号”模式。
- n 个反斜杠不后跟引号,只生成 n 个反斜杠。
CommandLineToArgvW 将引号外的空格视为参数分隔符。 但是,如果 lpCmdLine 以任意数量的空格开头, CommandLineToArgvW 会将第一个参数视为空字符串。 忽略 lpCmdLine 末尾的多余空格。
示例
以下示例演示如何分析 Unicode 命令行字符串。 代码在退出时释放参数列表的内存。
#include <windows.h>
#include <stdio.h>
#include <shellapi.h>
int __cdecl main()
{
LPWSTR *szArglist;
int nArgs;
int i;
szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs);
if( NULL == szArglist )
{
wprintf(L"CommandLineToArgvW failed\n");
return 0;
}
else for( i=0; i<nArgs; i++) printf("%d: %ws\n", i, szArglist[i]);
// Free memory allocated for CommandLineToArgvW arguments.
LocalFree(szArglist);
return(1);
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版、Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server、Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | shellapi.h |
Library | Shell32.lib |
DLL | Shell32.dll (6.0 或更高版本) |