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

发布于 2024-11-05 17:31:29 字数 46 浏览 6 评论 0原文

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

A colleague of mine claims that you cannot early-bind COM objects in AutoIt. Is this true?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

柠北森屋 2024-11-12 17:31:29

即使编译后,AutoIt 也是一种解释性语言。编译的实际过程只是将代码嵌入到解释器中(一些预处理器元素像包含一样排序)。

因此,绑定无法在编译时完成,因为没有编译时。这意味着以下内容将正常编译并且不会检测到错误。

$oShell = ObjCreate("shell.application")
If False Then ConsoleWrite($oShell.LolWut & @LF)

运行它,什么也不会发生。 $oShell.LolWut 永远不会被评估,因此不会出现错误。尝试使用执行语句的 if 测试,您会得到:对此对象请求的操作失败。

编辑:另请注意此处的回复,了解有关实施的更多详细信息。

AutoIt is an interpreted language even when compiled. The actual process of compiling is simply embedding the code in the interpreter (with some preprocessor elements sorted out like includes).

As a result, binding can not be done at compile time, as there is no compile time. This means that the following will compile fine and no error will be detected.

$oShell = ObjCreate("shell.application")
If False Then ConsoleWrite($oShell.LolWut & @LF)

Run that and nothing will happen. $oShell.LolWut will never be evaluated and so there is no error. Try it with the if test executing the statement and you get: The requested action with this object has failed.

Edit: Also note the reply here for more details on implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文