Вы должны получить доступ к свойствам непосредственно из ключей объекта 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;
}