作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Perl 中,使用 Win32::OLE
非常容易。库来加载 COM/OLE 对象并控制它们。我遇到的问题是确切地知道我正在访问的对象中有哪些方法和属性可用。其他语言中的某些 OLE 工具包可以通过读取对象上可用的所有属性和方法为您生成静态接口(interface)。 Perl 的Win32::OLE
是否存在这样的功能?图书馆?
最佳答案
您应该从 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;
}
keys %$OleObject;
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 - 如何在 Perl 中以编程方式发现 Win32::OLE 对象的属性和方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399589/
我是一名优秀的程序员,十分优秀!