如何在Perl中以编程方式发现Win32 :: OLE对象的属性和方法?

前端之家收集整理的这篇文章主要介绍了如何在Perl中以编程方式发现Win32 :: OLE对象的属性和方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Perl,使用 Win32::OLE库来加载COM / OLE对象并进行控制是非常容易的.我正在遇到的问题是正在知道正在访问的对象中有哪些方法属性可用.其他语言的一些OLE工具包可以通过读取对象上可用的所有属性方法为您生成一个静态接口. Perl的Win32 :: OLE库是否存在这样的设施?

解决方法

@H_403_5@ 您应该直接从Win32 :: OLE对象的键访问属性.我们以Excel为例.代码来自Win32 :: OLE示例 – properties.pl
它将显示Win32 :: OLE对象的所有属性.
my $Excel = Win32::OLE->new('Excel.Application','Quit');
# Add a workbook to get some more property values defined
$Excel->Workbooks->Add;
print "OLE object's properties:\n";
foreach my $Key (sort keys %$Excel) {
    my $Value;

    eval {$Value = $Excel->{$Key} };
    $Value = "***Exception***" if $@;

    $Value = "<undef>" unless defined $Value;

    $Value = '['.Win32::OLE->QueryObjectType($Value).']' 
      if UNIVERSAL::isa($Value,'Win32::OLE');

    $Value = '('.join(',',@$Value).')' if ref $Value eq 'ARRAY';

    printf "%s %s %s\n",$Key,'.' x (40-length($Key)),$Value;
}

在一行中,获取Win32 :: OLE对象的所有属性

keys %$OleObject;

所有OLE方法都可以通过Win32 :: OLE :: TypeInfo进行检索.该代码块将打印$OleObject的所有方法名称

my $typeinfo = $OleObject->GetTypeInfo();
my $attr = $typeinfo->_GetTypeAttr();
for (my $i = 0; $i< $attr->{cFuncs}; $i++) {
    my $desc = $typeinfo->_GetFuncDesc($i);
    # the call conversion of method was detailed in %$desc
    my $funcname = @{$typeinfo->_GetNames($desc->{memid},1)}[0];
    say $funcname;
}

猜你在找的Perl相关文章