Fungsi CommandLineToArgvW (shellapi.h)

Mengurai string baris perintah Unicode dan mengembalikan array pointer ke argumen baris perintah, bersama dengan hitungan argumen tersebut, dengan cara yang mirip dengan nilai argv dan argc run-time C standar.

Sintaks

LPWSTR * CommandLineToArgvW(
  [in]  LPCWSTR lpCmdLine,
  [out] int     *pNumArgs
);

Parameter

[in] lpCmdLine

Jenis: LPCWSTR

Penunjuk ke string Unicode yang dihentikan null yang berisi baris perintah lengkap. Jika parameter ini adalah string kosong, fungsi mengembalikan jalur ke file yang dapat dieksekusi saat ini.

[out] pNumArgs

Jenis: int*

Penunjuk ke int yang menerima jumlah elemen array yang dikembalikan, mirip dengan argc.

Nilai kembali

Jenis: LPWSTR*

Penunjuk ke array nilai LPWSTR , mirip dengan argv.

Jika fungsi gagal, nilai yang dikembalikan adalah NULL. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Keterangan

Alamat yang dikembalikan oleh CommandLineToArgvW adalah alamat elemen pertama dalam array nilai LPWSTR ; jumlah pointer dalam array ini ditunjukkan oleh pNumArgs. Setiap penunjuk ke string Unicode yang dihentikan null mewakili argumen individual yang ditemukan pada baris perintah.

CommandLineToArgvW mengalokasikan blok memori yang berdampingan untuk pointer ke string argumen, dan untuk string argumen itu sendiri; aplikasi panggilan harus membebaskan memori yang digunakan oleh daftar argumen ketika tidak lagi diperlukan. Untuk membebaskan memori, gunakan satu panggilan ke fungsi LocalFree .

Untuk informasi selengkapnya tentang konvensi argumen argv dan argc , lihat Definisi Argumen dan Mengurai Argumen C Command-Line.

Fungsi GetCommandLineW dapat digunakan untuk mendapatkan string baris perintah yang cocok untuk digunakan sebagai parameter lpCmdLine .

Fungsi ini menerima baris perintah yang berisi nama program; nama program dapat diapit dalam tanda kutip atau tidak.

CommandLineToArgvW memiliki interpretasi khusus karakter garis miring terbalik ketika diikuti oleh karakter tanda kutip ("). Interpretasi ini mengasumsikan bahwa argumen sebelumnya adalah jalur sistem file yang valid, atau mungkin bersifat tidak terduga.

Interpretasi khusus ini mengontrol mode "dalam tanda kutip" yang dilacak oleh pengurai. Ketika mode ini nonaktif, spasi kosong mengakhiri argumen saat ini. Saat aktif, spasi kosong ditambahkan ke argumen seperti semua karakter lainnya.

  • 2n garis miring terbalik diikuti dengan tanda kutip menghasilkan garis miring terbalik n diikuti oleh kutipan awal/akhir. Ini tidak menjadi bagian dari argumen yang diurai, tetapi mengalihkan mode "dalam tanda kutip".
  • (2n) + 1 garis miring terbalik diikuti dengan tanda kutip lagi menghasilkan garis miring terbalik n diikuti dengan tanda kutip literal ("). Ini tidak mengalihkan mode "dalam tanda kutip".
  • n garis miring terbalik tidak diikuti dengan tanda kutip hanya menghasilkan n garis miring terbalik.
Penting  

CommandLineToArgvW memperlakukan spasi kosong di luar tanda kutip sebagai pembatas argumen. Namun, jika lpCmdLine dimulai dengan sejumlah spasi kosong, CommandLineToArgvW akan menganggap argumen pertama sebagai string kosong. Spasi kosong berlebih di akhir lpCmdLine diabaikan.

 

Contoh

Contoh berikut menunjukkan cara mengurai string baris perintah Unicode. Kode membebaskan memori untuk daftar argumen saat keluar.

#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);
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional, Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server, Windows Server 2003 [hanya aplikasi desktop]
Target Platform Windows
Header shellapi.h
Pustaka Shell32.lib
DLL Shell32.dll (versi 6.0 atau yang lebih baru)