我试图弄清楚如何GetCommandLineW
在 Perl 中读取结果。
我知道它应该返回一个以"
在 PowerShell 下调用时开头的字符串,但我似乎无法提取多个字符。
以下代码片段加载该GetCommandLineW
函数并尝试调用它。✱</p>
#! /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 调用相同的脚本。