【问题标题】:Testing COM calls in WSH windows script在 WSH windows 脚本中测试 COM 调用
【发布时间】:2009-09-27 14:21:17
【问题描述】:

我有一个工作的 C# COM 组件 dll,在 ap 命名空间中有一个名为 MyComponent 的类,该类已添加到 GAC 并成功注册。我向它添加了一个 Add() 调用,用 win32 c++ exe 对其进行了测试,并成功调用了 Add() 调用,所以一切正常。

但是我想在 WSF(windows 脚本)中测试调用,我将下面的代码放在一个名为 test.wsf 的文件中,当我运行代码时出现错误:

错误:无法连接对象,就行了:
WScript.ConnectObject(appos,"ap_");

为什么连接不上!救命!

<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/WindowsScriptHost">
<job>
    <?job debug="true" ?> 
    <script language="JScript">
<![CDATA[       

// Create action provider
var appos = WScript.CreateObject ("ap.MyComponent");        
WScript.ConnectObject (appos, "ap_");

// Initialise voucher provider with store and terminal id strings
appos.Add(1,99);


// Release object
appos = null;

  WScript.StdIn.Read(1);
]]>
    </script>
 </job>
</package>

【问题讨论】:

    标签: c# com wsh


    【解决方案1】:

    来自 MSDN:

    将对象的事件源连接到具有给定前缀的函数。

    http://msdn.microsoft.com/en-us/library/ccxe1xe6(VS.85).aspx

    此方法注册回调。如果没有回调,则不需要调用该方法。

    【讨论】:

    • 我只是为前缀添加了一个随机字符串“ap_”;这需要特别吗?似乎在这两行上崩溃了:var appos = WScript.CreateObject ("ap.MyComponent"); WScript.ConnectObject (appos, "ap_"); 我没有任何事件,只有一个命名空间(ap)和一个名为 MyComponent 的类,它实现了一个接口。
    【解决方案2】:

    抱歉,我的回答不够准确。

    WScript.ConnectObject (appos, "ap_");
    

    此方法用于将脚本附加到 COM 对象事件。你没有事件,所以你不需要调用那个方法。

    来自 MSDN:

    将对象的事件源连接到具有给定前缀的函数。

    http://msdn.microsoft.com/en-us/library/ccxe1xe6%28VS.85%29.aspx

    这就够了:

    // Create action provider
    var appos = WScript.CreateObject ("ap.MyComponent");        
    
    // Initialise voucher provider with store and terminal id strings
    appos.Add(1,99);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多