1

我需要从 windows 操作系统下的程序窗口复制富文本。

如果我将文本拖放到写字板中(ctrl-c 不起作用),我会使用特定的希腊字体得到正确的结果;但它在 perl 下根本不起作用。我认为这取决于它是富文本的事实。

在下面的代码中,我尝试了 ### 前面的行的所有可能排列,结果始终相同,显示许多问号而不是希腊格式的文本。

你能帮我吗?谢谢

use 5.016;
use Win32::GuiTest
qw( FindWindowLike GetWindowRect GetWindowID GetClassName WMGetText GetWindowText UnicodeSemantics);
use strict;
use warnings;
use Encode qw (from_to decode encode);

UnicodeSemantics(1);

###
use open ':encoding(utf8)';
###
#binmode(STDOUT, ":utf8");
###
open 'FILE', ">", "canc.txt";
###
#binmode(FILE, ":utf8");

my $hwnd = 131266;
my $info = "# Window Text: '" . GetWindowText($hwnd) . "'\r\n";
$info = $info . "# Window Class: '" . GetClassName($hwnd) . "'\r\n";
$info = $info . "# Window ID: " . GetWindowID($hwnd) . "\r\n";
my ( $left, $top, $right, $bottom ) = GetWindowRect($hwnd);
$info = $info . "# Window Rect: ($left, $top) - ($right, $bottom)\r\n";

say $info;
my $actualText = WMGetText($hwnd);
say $actualText;
say FILE $actualText;
###
my $foo = decode( 'UTF-8', $actualText );
say $foo;
say FILE $foo;
###
my $body = encode( 'UTF-8', $foo );
say $body;
say FILE $body;
4

0 回答 0