【问题标题】:JScript handling COM eventsJScript 处理 COM 事件
【发布时间】:2014-07-18 15:24:17
【问题描述】:

我试图弄清楚如何将 JScript 事件处理程序添加到 COM 接口。在这个 API 中

http://helpnet.installshield.com/installshield17helplib/IHelpAutoISWiRelease.htm

我想观察 3 个构建状态事件。阅读微软文档

http://msdn.microsoft.com/en-us/library/vstudio/06t47502(v=vs.100).aspx

让我相信我需要使用 ISWiRelease.add_XXXXX(event_function) 方法。但是 ISWiRelease 文档没有列出“添加事件处理程序”方法。

弄清楚这一点似乎应该很简单。但我正在用头撞墙。这里有一个使用 Visual Basic 检测事件的示例

http://helpnet.flexerasoftware.com/installshield21helplib/helplibrary/AutomationBuildStatEv.htm

但这对我帮助不大。

我尝试列出使用这些方法的函数/方法

How to display all methods of an object in Javascript?

How to list the functions/methods of a javascript object? (Is it even possible?)

但是当我遍历 ISWiRelease 对象时,它就像是空的一样。

如何找出 addXXXX(..) 事件函数的名称?

附加信息:

  • 我是 JScript/wsf 菜鸟
  • JScript 通过 .wsf 文件和 cscript 调用
  • 我尝试添加一个基本的导入系统;到给出语法错误的 .js 文件(不知道为什么)
  • 我只是对这个项目进行了简单的梳理。我没有设置它,选择使用 cscript 或自动化接口,如果改为调用命令行工具会更开心,但我无法做出如此大的改变。
  • 这是对Redirecting the InstallShield log to console 的跟进

【问题讨论】:

    标签: events jscript wsh


    【解决方案1】:

    您的 JScript 代码是否在 WSF 文件中?如果是这样,您可以使用events="true" 添加<object> 引用。然后您可以使用objectName::eventName 语法定义事件处理函数。例如:

    <job>
      <object id="oWord" progid="Word.Application" events="true"/>
      <script language="JScript">
        function oWord::NewDocument(oDoc) {
          WScript.Echo("New document: " + oDoc.Name);
        }
    
        oWord.Visible = true;
        oWord.Documents.Add(); // fires the event handler
        oWord.Documents.Add(); // fires the event handler again
        WScript.Sleep(2000);
        oWord.Quit();
      </script>
    </job>
    

    (您链接到的 MSDN 文章是关于 JScript.NET,它与 Windows Script Host 是分开的。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2012-06-11
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多