我正在努力控制带有perl的外部Windows应用程序上的'Internet Explorer_Server'类的IE预览控件。
Internet Explorer_Server是窗口的类名,我用Spy ++找到了它。这是我的断言代码
$className = Win32::GUI::GetClassName($window);
if ($className eq "Internet Explorer_Server") {
...
}
我可以使用Win32::GUI::GetWindow
获取“Internet Explorer_Server”的句柄,但不知道下一步该做什么。
答案 0 :(得分:5)
已更新: 您走错了路。你需要的是Win32::OLE
。
#!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE;
$Win32::OLE::Warn = 3;
my $shell = get_shell();
my $windows = $shell->Windows;
my $count = $windows->{Count};
for my $item ( 1 .. $count ) {
my $window = $windows->Item( $item );
my $doc = $window->{Document};
next unless $doc;
print $doc->{body}->innerHTML;
}
sub get_shell {
my $shell;
eval {
$shell = Win32::OLE->GetActiveObject('Shell.Application');
};
die "$@\n" if $@;
return $shell if defined $shell;
$shell = Win32::OLE->new('Shell.Application')
or die "Cannot get Shell.Application: ",
Win32::OLE->LastError, "\n";
}
__END__
因此,此代码找到一个具有Document
属性的窗口并打印HTML。您必须决定使用哪个标准来查找您感兴趣的窗口。
答案 1 :(得分:1)
您可能需要查看Win32::IE::Mechanize。我不确定您是否可以使用此模块控制现有 IE窗口,但是应该可以在大约五行代码中访问单个URL。
答案 2 :(得分:0)
你看过Samie http://samie.sourceforge.net/,因为这是一个控制IE的perl模块