2

perl を使用して、外部 Windows アプリケーションの 'Internet Explorer_Server' クラスである IE プレビュー コントロールを制御するのに苦労しています。

Internet Explorer_Server はウィンドウのクラス名です。Spy++ で見つけました。そして、これが私のアサーションコードです

$className = Win32::GUI::GetClassName($window); 
if ($className eq "Internet Explorer_Server") { 
    ... 
}

その「Internet Explorer_Server」のハンドルを で取得できますが、Win32::GUI::GetWindow次に何をすべきかわかりません。

4

3 に答える 3

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 を出力します。関心のあるウィンドウを見つけるために使用する基準を決定する必要があります。

ShellWindowsドキュメンテーション

于 2009-07-27T17:01:32.873 に答える
1

Win32::IE::Mechanizeを見たいと思うかもしれません。このモジュールで既存のIE ウィンドウを制御できるかどうかはわかりませんが、約 5 行のコードで単一の URL にアクセスできるはずです。

于 2009-07-28T07:12:17.360 に答える
0

これは IE を制御するための perl モジュールであるため、Samie http://samie.sourceforge.net/を見ましたか?

于 2009-07-27T19:41:07.547 に答える