diff -ruN Win32-0.45/Win32.xs Win32-0.45066/Win32.xs --- Win32-0.45/Win32.xs 2012-08-13 16:06:21.000000000 -0700 +++ Win32-0.45066/Win32.xs 2012-12-08 06:46:20.593750000 -0800 @@ -1753,6 +1753,32 @@ XSRETURN_IV(SetConsoleOutputCP((int)SvIV(ST(0)))); } + + +XS(w32_ArgvW) +{ + dXSARGS; + + int nArgs; + int ix = 0; + wchar_t** szArglist; + const wchar_t* wArgstring = GetCommandLineW(); + + if (GIMME_V == G_ARRAY) { + szArglist = CommandLineToArgvW( wArgstring , &nArgs); + for( ix = 0; ix < nArgs; ix++) { + XPUSHs( wstr_to_sv(aTHX_ szArglist[ix] ) ); + } + PUTBACK; + return; + } else { + XPUSHs( wstr_to_sv(aTHX_ wArgstring ) ); + PUTBACK; + return; + } + XSRETURN_EMPTY; +} + MODULE = Win32 PACKAGE = Win32 PROTOTYPES: DISABLE @@ -1825,5 +1851,7 @@ #ifdef __CYGWIN__ newXS("Win32::SetChildShowWindow", w32_SetChildShowWindow, file); #endif + + newXS("Win32::ArgvW", w32_ArgvW, file); XSRETURN_YES; }