2014-07-18 37 views
1

我想弄清楚如何將JScript事件處理程序添加到COM接口。在這個APIJScript處理COM事件

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

回答

1

是在WSF文件中的JScript代碼?如果是這樣,您可以添加一個<object>參考events="true"。然後,您可以使用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腳本宿主分開。)