ATL使IE自动关闭

wuhj 2010-08-31 08:28:05
本人是做JAVA的,对VC一窍不通,但因为厂商提供的DLL不能直接被IE调用,该DLL定义的头文件如下:
extern "C" __declspec(dllexport) void ASCToHEX(unsigned char *sAsc,long len,unsigned char *sHex);
其中unsigned char *sHex参数为输出返回[out,retval]类型。

就自己动手想封装一下,用以下方法:
STDMETHODIMP MyICard::ASC2HEX(VARIANT sAsc, long len, VARIANT *sHex)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())

// TODO: Add your implementation code here
::VariantInit(sHex);
ASCToHEX(sAsc.pbVal,sHex->pbVal);

return S_OK;
}
注册后发现调用成功,然后就试着调用:
<object cls="xxxxxxxxxxxxxxx" id="obj">
</object>
<script>
var str="abcdefg";
var ret=obj.ASCToHEX(str,str.length);
alert(ret);
</script>
一运行IE就自动关闭了。请问各位GGMM应该怎么调用?
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuhj 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qyljcy 的回复:]
客户没有提供type library?
[/Quote]

提供了,现在问题就是他们的接口函数的参数类型都是unsigned char*,要想被javascript调用必须得换成其它参数类型才行,现在要么返回乱码,码么返回的数据变成了双位数

qyljcy 2010-09-02
  • 打赏
  • 举报
回复
客户没有提供type library?
lifecode 2010-09-02
  • 打赏
  • 举报
回复
不能类型转换(char*)BSTR,建议多看msdn
wuhj 2010-09-01
  • 打赏
  • 举报
回复
STDMETHODIMP MyICard::ASC2HEX(BSTR sAsc, long len, BSTR *sHex)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())

// TODO: Add your implementation code here
*sHex = ::SysAllocStringByteLen((char *)sAsc,len);
//memcpy(sHex, sAsc, len);
MessageBox(NULL,(char *)*sHex,"",MB_OK);
return S_OK;
}

<BODY>
<OBJECT ID="obj" CLASSID="CLSID:3F6123A6-C8C5-4B45-8507-4FAAA86EDF90">
</OBJECT>
<script>
obj.ASC2HEX("abcdefg",7);
</script>
</BODY>

我传了“abcdefg”,为什么只显示 “a”呢
lifecode 2010-09-01
  • 打赏
  • 举报
回复
vc有一个ActiveX控件测试容器的工具,建议你先使用它试试你的控件,能不能运行
wuhj 2010-09-01
  • 打赏
  • 举报
回复
客户提供了一个不可注册的DLL,其中有一个方法是:
void ASCToHEX(unsigned char *sAsc,long len,unsigned char *sHex);
现在想做一个可注册的DLL,大家帮我看看应该怎么调用。给个例子啊,谢谢。回头一定加分。
wuhj 2010-09-01
  • 打赏
  • 举报
回复
改了后,javascript调用时出错了,提示:参数不必配
真相重于对错 2010-09-01
  • 打赏
  • 举报
回复
unsigned char *sHex参数为输出返回[out,retval]类型
=====
应该为 unsigned char**
wuhj 2010-09-01
  • 打赏
  • 举报
回复
extern "C" __declspec(dllexport) void ASCToHEX(unsigned char *sAsc,long len,unsigned char *sHex);

我想知道unsigned char *这样的类型javascript怎么传值
wuhj 2010-09-01
  • 打赏
  • 举报
回复
各位大哥,帮我看看啊

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧