1

我试图弄清楚如何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 调用相同的脚本。

4

0 回答 0