首先创建一个ATLCOM对象,其过程参考下面文章:
C#调用ATLCOM
其实给COM对象添加方法和属性可以不用界面的繁琐做法,只需要在idl文件和代码中添加下面代码:
interface IImportCode : IDispatch{
[propget,id(1),helpstring('属性AddResult')]HRESULT AddResult([out,retval] LONG* lpRet);
[id(2), helpstring('方法Add')] HRESULT Add([in] LONG Num1, [in] LONG Num2);
};
在ATL类对象CImportCode中添加如下代码:
public:
STDMETHOD(Add)(LONG Num1, LONG Num2);
STDMETHOD(get_AddResult)(LONG* lpRet);
private:
LONG m_lRet; // 用于保存加法运算结果
STDMETHODIMP CImportCode::Add( LONG Num1, LONG Num2)
{
m_lRet = Num1 + Num2;
return S_OK;
}
STDMETHODIMP CImportCode::get_AddResult( LONG* lpRet )
{
* lpRet = m_lRet;
return S_OK;
}
值得注意的是添加的属性名为AddResult,其量化接口,接口参数类型为long*,那么对应的获取属性值得量化接口,接口为get_AddResult,即get_属性名。
测试的JS代码很简单:
// Create the Add Com object.
var AddMethod = new ActiveXObject('DevAssist.ImportCode');
var num1 =100;
var num2 =20;
// Translate number to text.
try
{
AddMethod.Add(num1,num2);
var objNumber = AddMethod.AddResult; // 获取它的属性值
WScript.Echo(objNumber);
}
catch (e)
{
// Display details about any thrown exceptions.
WScript.Echo(e.name + ': ' + e.description + ' ' + e.number);
}
参考文献:
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点