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 |
程式庫 | Shell32.lib |
Dll | Shell32.dll (6.0 版或更新版本) |