Supposedly this is the same as using wmain, but works with mingw # define UNICODE
# define _UNICODE
#include <windows.h>
#include <stdio.h>
#include <shellapi.h>
int __cdecl main()
{
LPWSTR *szArglist;
int nArgs;
int i;
int ix;
int nLength;
wprintf(L"commandline==\n%ws\n====\n\n\n", GetCommandLineW() );
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]);
for( i=0; i<nArgs; i++) wprintf(L"\n\n%d: %s\n", i, szArglist[
+i]);
//~ http://stackoverflow.com/questions/4014172/wprintf-format-type-spe
+cification-ws# c++ - wprintf format type specification %ws - Stack Ov
+erflow
//~ http://msdn.microsoft.com/en-us/library/ms647550%28VS.85%29.aspx#
+ wsprintf function (Windows)
for( i=0; i<nArgs; i++) {
nLength = wcslen( szArglist[i] );
//~ printf("\n{%d: nLength %d}\n", i, nLength );
printf("\n$F[%d] = []; # nLength %d\n", i, nLength );
for( ix=0; ix < nLength; ix++ ){
//~ printf("%d: %d %#04X\n", i, ix, szArglist[i][ix] )
+;
//~ printf("{%d: %d %#04X} ", i, ix, szArglist[i][ix]
+);
printf("$F[%d][%d]=%#04X; ", i, ix, szArglist[i][ix] )
+;
if( 0 == (ix % 5) ) { printf("\n"); }
}
}
}
// Free memory allocated for CommandLineToArgvW arguments.
LocalFree(szArglist);
//~ sleep(20);
printf("\n");
system("PAUSE");
return(1);
}
And I do appear to get some kind of unicode :)
$F[1] = []; # nLength 39
$F[1][24]=0X6B; $F[1][25]=0X65;
$F[1][26]=0X62; $F[1][27]=0X61; $F[1][28]=0X62; $F[1][29]=0X5C; $F[1][
+30]=0X107;
$F[1][31]=0X65; $F[1][32]=0X76; $F[1][33]=0X61; $F[1][34]=0X70; $F[1][
+35]=0X2E;
$F[1][36]=0X74; $F[1][37]=0X78; $F[1][38]=0X74;
$F[2][24]=0X6B; $F[2][25]=0X65;
$F[2][26]=0X62; $F[2][27]=0X61; $F[2][28]=0X62; $F[2][29]=0X5C; $F[2][
+30]=0X72;
$F[2][31]=0X61; $F[2][32]=0X17E; $F[2][33]=0X6E; $F[2][34]=0X6A; $F[2]
+[35]=0X69;
$F[2][36]=0X107; $F[2][37]=0X2E; $F[2][38]=0X74; $F[2][39]=0X78; $F[2]
+[40]=0X74;
binmode STDOUT, ':encoding(UTF-8)';
fudge(\@F);
use Data::Dump; dd\@F;
sub fudge {
my( $args ) = @_;
for my $arg ( @$args ){
next unless defined $arg;
my $one = "";
for my $char ( @$arg ){
next unless defined $char;
my $chr = chr( $char );
print $chr;
$one .= $chr;
}
print "\n";
dd $one;
}
}
__END__
kebab\ćevap.txt
"kebab\\\x{107}evap.txt"
kebab\ražnjić.txt
"kebab\\ra\x{17E}nji\x{107}.txt"
Now all that is left is to figure out how to call system() in C
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Outside of code tags, you may need to use entities for some characters:
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|