描述:
VC2008,新建一个ATL项目,dll工程。
新建ATL简单对象TestObj,添加方法TestFun。方法实现如下——
STDMETHODIMP CTestObj::TestFun(void)
{
// TODO: 在此添加实现代码
MessageBox(NULL, _T("hello"), _T("good"), MB_OK);
return S_OK;
}
VB脚本如下——
<HTML>
<SCRIPT language="VBScript">
set obj=CreateObject("TestCOM.TestObj")
if err<>0 then
alert("失败!")
else
obj.TestFun()
end if
</SCRIPT>
</HTML>
通过增加IE右键菜单调用VB脚本(本地的一个html),报错——
当前页面的脚本发生错误。
行: 7
Char: 4
错误: 缺少对象: 'obj'
代码: 0
第一次搞ATL的东东,希望大家帮帮忙,谢谢!
解决方案1:
只有支持IDispatch,才能被C++以外的语言调用
解决方案2:楼主还没搞明白什么是双重接口,什么样的对象才是脚本可访问的对象
解决方案3: 创建自动化的COM才可以VBScript,
IDispatch
如果是客户端脚本,则应添加 <object> </object> 标签对。
具体的办法是你用interdev或其他的工具,将activex加到工具栏中拖放一个activex到页面上保存即生成一段带有 <object> </object> 的代码,你可以作适当的修改