如何从经典ASP中调用COM对象函数
How to call COM object function from classic ASP
在我的经典ASP站点中,我需要调用COM对象函数。
以下是COM组件的定义:
interface IMyComponent : IDispatch
{
HRESULT GetVersion([in] int, [out] double*, [out] BSTR*);
}
在服务器端,我创建组件对象并尝试调用"GetVersion"函数:
<%
Dim app
Set app = CreateObject("MyComponent")
Dim someUsefulValue
Dim version
app.GetVersion 1, someUsefulValue, version
%>
但此代码失败,错误为"类型不匹配"。我应该如何调用此函数?
首先,请记住没有其他浏览器支持ActiveX而不是Internet Explorer,所以我会重新考虑,如果你不应该使用其他方法来解决这个问题,也许可以使用对其他浏览器更开放的其他组件。。。
如Microsoft Silverlight(如果您采用.NET方式(、AdobeFlash、Shockwave和Air。。。
在HTML中
您的ASP页面需要具有ActiveX 的<object>
代码
<OBJECT ID="myActiveX "
CLASSID="clsid: yourControlId">
</OBJECT>
然后您就可以充当一个普通的DOM对象
var myActiveX = document.getElementById("myObject");
alert( myActiveX.GetVersion(...) );
将COM方法的第一个参数的类型更改为long,而不是int。long转换为变量类型VT_I4,而int转换为VT_int。如果内存合适的话,VBScript不会识别VT_INT,因为它不是"自动化兼容类型"(INT的大小可能不会在编译器/平台之间固定!(
尝试:
<%
Dim app
Set app = Server.CreateObject("MyComponent")
Dim someUsefulValue
Dim version
app.GetVersion 1, someUsefulValue, version
%>
在服务器端,您应该使用server.CreateObject,而不仅仅是CreateObject因为它通常用于客户端VBScript。
确保已使用regsvr32 MyComponent.dll 安装并注册COM对象
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- Parse.com -- Cloud Code/JS -- “无法调用未定义的方法'set'”
- 从未引用的程序集中调用 COM 方法
- Parse.com后台作业云代码无法调用方法'那么'的未定义
- "无效标签“;当使用带有jsonp的jQuery调用jsoni.com时
- Parse.com云代码错误:尝试更新用户时未调用success/Error
- 调用()从我的app.meteor.com
- 我可以在浏览器窗口的图像上调用Javascript bookmarklet吗?例如:blah.com/blah.jpg
- 是否可以在没有COM/activeX的情况下从javascript调用.Net API
- 为什么我的AngularJS视图没有得到更新与Parse.com JavaScript SDK AJAX调用后
- 如何从经典ASP中调用COM对象函数
- PHP/Javascript项目不断调用your-meme-site.com
- Parse.com云代码错误:TypeError:无法调用方法'获取'的未定义
- 通过 COM 接口调用 JavaScript 方法
- @ Parse.com success/error not called I'我只调用了一次success/er
- Parse.com云代码:2个用户同时调用的函数