在VBA和VBS中创建对象

时间:2012-03-14 17:25:25

标签: vba vbscript

最近,在尝试访问Windows防火墙的属性和方法时,我引用了hnetcfg.dll,并且能够为inetfwMGrinetfwPolicy等对象维度变量

但我无法按要求为他们创建对象,例如
set obj = new inetfwmgr
 不会起作用

读到我知道我需要使用
CreateObject("hnetcfg.FwMgr")
 进一步发展。

我想知道的是如何知道哪些对象可以在VBA中从给定的dll创建。查看参考here。我无法找到一条线索来表明您需要创建一个对象hnetcfg.FwMgr才能继续。为什么FwMgr?如何发现是否有其他对象是从hnetgfg.dll创建的?这些信息是否应该是我没有看到的参考文献,或者是某些查看hnetcfg属性的隐含信息?

任何见解都会受到赞赏。谢谢

2 个答案:

答案 0 :(得分:5)

我对这个dll一无所知,但我认为这会有所帮助。

您可以使用CreateObject,从长远来看,您可能希望提高可移植性。这称为“后期绑定”。另一方面,如果您已设置对dll的引用,则可以标注并创建新的NetFwLibLib对象(“早期绑定”)。这里的优点是你将获得intellisense并可以在对象浏览器中检查它的属性。这是在Excel VBE中编写的一些代码:

Sub test()
Dim test As NetFwTypeLib.INetFwMgr
Set test = New NetFwTypeLib.INetFwMgr
With test
    .CurrentProfileType = ...
End With
End Sub

此外,您可以使用对象浏览器来检查FwTypeLib。只需单击F2(在本例中为Excel的VBE),您将看到如下内容:

enter image description here

答案 1 :(得分:2)

您需要使用类型库查看器。我强烈推荐TLViewer

iTripoli也有不错的。

Windows防火墙也有很多脚本参考。

Windows Firewall Tools and Settings Scripting Reference

Windows Firewall Scripting (ActiveXperts)