vbscript 的 CreateObject("..") 建立 COM 物件后无法执行介面的 Method ( 积分: 100 )

  • 主题发起人 主题发起人 atrust
  • 开始时间 开始时间
A

atrust

Unregistered / Unconfirmed
GUEST, unregistred user!
我依这篇文章编写了一个 COM DLL:
http://delphi.about.com/library/weekly/aa121404b.htm

然后在 delphi 程序中如它所写使用
var
FMyComObject : IDisplaySomething;
begin
OleCheck(CoCreateInstance(
Class_DisplaySomething,
nil,
CLSCTX_ALL,
IDisplaySomething,
FMyComObject));

FMyComObject.DisplayMessage
('I have succeeded!');
end;

调用成功

可是使用 vbscript 如下
<script language="VBScript">
On Error Resume Next
Set MyObj = CreateObject("MyDLL.DisplaySomething")

if Err <> 0 then
'这里没有显示错误, 所以 DLL 应该有正常载入
MsgBox("Error!")
else
'DisplayMessage 的参数已改为 WideString
'但无反应
Call MyObj.DisplayMessage("abc")
end if
</script>

请问为何会如此呢, 是否 DisplayMessage 有什么属性要更改,
才能被 VBScript 调用呢?
补充一下 无反应后面 Err 是 424,
查了一下好像是需要物件,可是CreateObject时并无错误,
不知为何如此呢
 
On Error Resume Next
当然不会报错了

普通COM对象无法后期绑定,必须建立自动化对象(Automation Object)才能后期绑定
要在DELPHI中测试后期绑定,得用CreateOleObject建立对象,对应VBS里的CreateObject
 
没注意到后期和前期绑定这差别
更不知道用自动化对象~_~
您令我茅塞顿开啊!感谢
 
接受答案了.
 
后退
顶部