我第一次做ActiveX,在网上找了好多帖子,实在搞不定啊,大家帮帮忙~~~~~

mars131 2006-09-14 04:16:57
写了一个简单的MFC ActiveX控件,现在用的测试安全证书,安全接口的代码也都加上去了。现在的情况是用VC7.1编译后自动会将控件注册,打开网页后是好的。我再把这个控件注销了以后,让它从IE安装,现在可以安装,但是安装完了以后显示一个小红叉,在ActiveX测试容器里面能看到这个控件名,打开时提示:未能创建控件,未指定的错误。
真的不知到再该怎么写了,郁闷~~~~
...全文
463 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuhan_0110 2006-09-20
  • 打赏
  • 举报
回复
to :zhucde(【風間苍月】) ( ) 信誉:272
你的页面我也打不开呀
??
wangweixing2000 2006-09-18
  • 打赏
  • 举报
回复
缺少IE的安全脚本的支持,很简单,在类厂注册的时候在你的注册表中加两个键值即可。
下面给出代码,回去爽一把吧!哈哈


const CATID CATID_SafeForScripting =
{0x7dd95801,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
const CATID CATID_SafeForInitializing =
{0x7dd95802,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
这段代码的值对应的项目里面的应该是什么啊?它上面讲的我不是很清楚啊

--〉这两个是要注册到你控件CLSID的下面的,IE是要去看你的CLSID下面有没有这两个KEY,如果没有,那么它认为是不安全的。
具体的代码如下:
// DllRegisterServer - 将项添加到系统注册表

STDAPI DllRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);

//-------------------------------------------------------
if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);

if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);

if (FAILED( CreateComponentCategory(
CATID_SafeForScripting,
L"Controls that are safely scriptable") ))
return ResultFromScode(SELFREG_E_CLASS);

if (FAILED( CreateComponentCategory(
CATID_SafeForInitializing,
L"Controls safely initializable from persistent data") ))
return ResultFromScode(SELFREG_E_CLASS);

if (FAILED( RegisterCLSIDInCategory(
_ctlid, CATID_SafeForScripting) ))
return ResultFromScode(SELFREG_E_CLASS);

if (FAILED( RegisterCLSIDInCategory(
_ctlid, CATID_SafeForInitializing) ))
return ResultFromScode(SELFREG_E_CLASS);
//-------------------------------------------------------
//下面以前生成的代码,把它屏蔽掉!

/*if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid))
return ResultFromScode(SELFREG_E_TYPELIB);

if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG_E_CLASS);*/

return NOERROR;
}

comet 2006-09-18
  • 打赏
  • 举报
回复
漏了.lic文件
BOYGUARD110 2006-09-17
  • 打赏
  • 举报
回复
mark
zhucde 2006-09-15
  • 打赏
  • 举报
回复
http://www.bezier.com.cn/temp/vr

这个页面使用了我写的控件,如果你能使用,
就到http://www.bezier.com.cn上找我的联系方式吧
shepherds 2006-09-15
  • 打赏
  • 举报
回复
我的也是这个问题呀,头一回写ActiveX控件,控件是VS2005 MFC写的,代码中实现了自动注册、初始化安全和脚本安全,手动注册控件后,在本地浏览器可以打开,换另一台机子就是红“X”。如果注销控件后,本地浏览器也无法显示了。
  以上控件我已经打成CAB包了,我怀疑是inf文件中的dll文件的版本问题,不知哪位高手愿意教我呀?我邮箱:shepherds@126.com,将源代码和我的CAB包发给你测试,感激不尽,请务必在测试成功后告诉我要怎么改正,谢谢谢谢谢谢.......
konj 2006-09-15
  • 打赏
  • 举报
回复
降低你的IE设置,如设置为信任的站点
写inf文件,然后用工具把它和你的ActiveX打成一个CAB包。
palmax 2006-09-14
  • 打赏
  • 举报
回复
用depends看下你的ocx依赖哪些dll,除去共享的dll,其他的都拷贝到system32下,然后重新注册
mars131 2006-09-14
  • 打赏
  • 举报
回复
我现在发现手动注册只有ocx文件在我的Release版本生成的文件夹里才能成功,如果我把ocx文件挪动的地方的话也是不能成功的。不知道是什么原因。
mars131 2006-09-14
  • 打赏
  • 举报
回复
上面的情况是在一台机子上测试的,其中有一种情况是可以使用的。所以在本机的时候是不是dll已经齐全的呢?
hjt28 2006-09-14
  • 打赏
  • 举报
回复
1,降低你的IE设置,如设置为信任的站点
2,要写inf文件,然后用工具把它和你的ActiveX打成一个CAB包。

palmax 2006-09-14
  • 打赏
  • 举报
回复
1.请检查你IE的安全设置
2.确保你网页形式发布时控件所需的dll已经齐全
mars131 2006-09-14
  • 打赏
  • 举报
回复
const CATID CATID_SafeForScripting =
{0x7dd95801,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
const CATID CATID_SafeForInitializing =
{0x7dd95802,0x9882,0x11cf,{0x9f,0xa9,0x00,0xaa,0x00,0x6c,0x42,0xc4}};
这段代码的值对应的项目里面的应该是什么啊?它上面讲的我不是很清楚啊
mars131 2006-09-14
  • 打赏
  • 举报
回复
安全接口的代码我是写了,编译可以通过,但不知道有没有成功
maoliao 2006-09-14
  • 打赏
  • 举报
回复
没有实现安全接口
http://support.microsoft.com/kb/161873/EN-US/

3,245

社区成员

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

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