【问题标题】:VBScript passing value by reference (VarPtr) to ActiveX functionVBScript 通过引用 (VarPtr) 将值传递给 ActiveX 函数
【发布时间】:2021-02-08 13:13:57
【问题描述】:

我正在尝试这个:

  Dim oApp
  Dim iReturnedResult

  Set oApp = CreateObject("Some.Application")
  Set F_Ord = oApp.Documents.Open("Window 1", VarPtr(iReturnedResult))

ActiveX 控件期望第二个参数是 Long by reference。

这在 Excel VBA 中运行良好。 我可以一步一步运行,看看结果是否正常。

但是,当我将此代码移动到 VBS 文件并从命令行 (CScript.exe) 运行时,我收到错误 800A000D,这意味着它是错误的类型。

我也尝试过创建一个数组,并使用这些命令进行测试,但没有任何运气:

Set F_Ord = oApp.Documents.Open("Window 1", VarPtr(iReturnedResult(0)))
Set F_Ord = oApp.Documents.Open("Window 1", iReturnedResult(0))

有谁知道如何通过引用 VBScript 中的 ActiveX 控件来传递长变量?

【问题讨论】:

  • VarPtr() 在 VBScript 中不受支持。
  • 您可以尝试 Dim iReturnResult: iReturnResult = CLng(0) 然后将其作为参数传递,但如果需要指针,则不确定它是否会起作用。
  • 啊,你是对的,VBA 支持 VarPtr,但 VBScript 不支持。谢谢。并感谢关于 CLng 的建议,但确实有效。
  • 老实说我没想到,因为它期待的是 CLng() 不是的指针。

标签: vbscript pass-by-reference activex wsh


【解决方案1】:

简单的答案是VarPtr() 不受VBScript 支持。

据我所知,没有等价物可以让您将指针传递给变量内存地址。


有用的链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2011-12-07
    • 2018-09-22
    • 2018-01-18
    • 2016-06-19
    相关资源
    最近更新 更多