我试图弄清楚如何在Perl中读取GetCommandLineW
的结果。
我知道在PowerShell下调用时,它应该返回以"
开头的字符串,但是我似乎不能提取多个字符。
以下代码段加载GetCommandLineW
函数并尝试调用它。✱
#! /usr/bin/env perl
use strict;
use warnings;
use Win32;
use Data::Dumper;
use Win32::API;
my $GetCommandLineW = Win32::API::More->new(
"kernel32", "LPWSTR GetCommandLineW()"
);
die unless $GetCommandLineW;
print Dumper($GetCommandLineW->Call());
打印
$VAR1 = '"';
如果我在命令行中将LPWSTR
替换为char *
或其他类似字符串的东西,将会得到相同的结果。如果我使用int
或无用值作为返回类型,我将返回一个指针作为十进制数。
有没有一种方法可以向Win32::API
模块指示我打算读回UTF-16 LE字符串,或者可以“说服”它以将所述字符串的所有内容放入Perl标量。
我可以接受,只要所有数据都存在,结果标量中是否存在一些编码问题,需要在调用$GetCommandLineW->Call()
之后立即清除。
✱shebang在那里,因此可以在有或没有Cygwin的情况下调用相同的脚本。