如何在AutoIt中提前绑定COM对象?

如何在AutoIt中提前绑定COM对象?,com,autoit,early-binding,Com,Autoit,Early Binding,我的一位同事声称,不能在AutoIt中提前绑定COM对象。这是真的吗?AutoIt即使在编译时也是一种解释语言。编译的实际过程只是将代码嵌入到解释器中(将一些预处理器元素分类,如includes) 因此,绑定不能在编译时完成,因为没有编译时。这意味着以下内容将很好地编译,并且不会检测到任何错误 $oShell = ObjCreate("shell.application") If False Then ConsoleWrite($oShell.LolWut & @LF) 运行它,什么也

我的一位同事声称,不能在AutoIt中提前绑定COM对象。这是真的吗?

AutoIt即使在编译时也是一种解释语言。编译的实际过程只是将代码嵌入到解释器中(将一些预处理器元素分类,如includes)

因此,绑定不能在编译时完成,因为没有编译时。这意味着以下内容将很好地编译,并且不会检测到任何错误

$oShell = ObjCreate("shell.application")
If False Then ConsoleWrite($oShell.LolWut & @LF)
运行它,什么也不会发生$不会对oShell.LolWut进行评估,因此不会出现错误。使用执行该语句的if测试进行尝试,您会得到:使用该对象请求的操作已失败


编辑:还请注意回复以了解有关实现的更多详细信息。

AutoIt是一种解释语言,因此当您调用ObjGet或ObjCreate时,可能会进行绑定(不过,请不要相信我的话,您需要询问此类信息)。当你说'early'时,你是指何时声明对象还是何时使用属性/方法?我是一名VB程序员,所以我的意思是,如果你必须在库中添加一个引用,然后将Dim a声明为MyLibrary.MyClass等。我已经重新发布了,应该很快就会得到答案。在回答你最后的评论时。。。不,您不能添加引用。一切都是在运行时完成的我想要的是在编译时发现方法名调用中的拼写错误——而不是在第一次调用并抛出错误(今天发生的情况!)的2个月后——听起来这是不可能的。。。