我用vc写了一个OCX控件,请问如果在WEB上使用

haoel 2003-10-15 11:12:11
我的HTML语法如下:

<OBJECT
classid="clsid:2B43D376-3BCD-4E15-B496-4660662DC6C6"
codebase="http://172.20.1.82/Recorder.ocx"
width=350
height=250
align=center
hspace=0
vspace=0
>
</OBJECT>

并且我降低了IE的安全级,我想做成那种,如果访问该网页就可以下载这个OCX控件,但是不成功,不知道是什么原因,请教各位!
...全文
175 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
haoel 2003-10-23
感谢大家的帮助
  • 打赏
  • 举报
回复
haoel 2003-10-23
问题解决了,主要是Control中的这两个成员函数造成的:

static const TCHAR BASED_CODE _szLicFileName[] = _T("Recorder.lic");

static const WCHAR BASED_CODE _szLicString[] =
L"Copyright (c) 2003 platform";


/////////////////////////////////////////////////////////////////////////////
// CRecorderCtrl::CRecorderCtrlFactory::VerifyUserLicense -
// Checks for existence of a user license

BOOL CRecorderCtrl::CRecorderCtrlFactory::VerifyUserLicense()
{
return AfxVerifyLicFile(AfxGetInstanceHandle(), _szLicFileName,
_szLicString);
}


/////////////////////////////////////////////////////////////////////////////
// CRecorderCtrl::CRecorderCtrlFactory::GetLicenseKey -
// Returns a runtime licensing key

BOOL CRecorderCtrl::CRecorderCtrlFactory::GetLicenseKey(DWORD dwReserved,
BSTR FAR* pbstrKey)
{
if (pbstrKey == NULL)
return FALSE;

*pbstrKey = SysAllocString(_szLicString);
return (*pbstrKey != NULL);
}


强制这两个函数返回TRUE,或是取消这两个函数就可以了。
  • 打赏
  • 举报
回复
xsc2001 2003-10-23
<object classid="clsid:F96E1F44-3BB2-4E94-AF8A-376A1275BBC9" codebase="http://supersoft/mytest/NetRepControl.cab#version=1,0,0,0" id="NetRepControl1" width=100% height=100%>
<param name="_Version" value="65536">
<param name="_ExtentX" value="20638">
<param name="_ExtentY" value="11007">
<param name="_StockProps" value="0">
</object>
在codebase处一定要写上你所配的完整个虚拟目录地址,另外客户端得将IE的安全性降到最低,除非你申请了代码签名。我就是这样做的,我做的网络报表控件就这样用可以下载,你按我所说的试试!
  • 打赏
  • 举报
回复
haoel 2003-10-23
To zjg751206(play程序),放在同一个目录下也不管用。

To warmchang(风滑过的痕迹),我想问一下,这个问题如何解决?
  • 打赏
  • 举报
回复
warmchang 2003-10-23
各位:
我说的licence证书不是指CAB文件中的那个Spc证书!

而是ocx在发布时需要的licence文件,安装后在注册表里写入了一些字符值,标识当前控件已授权,否则不可用!

你们注意到没有:mscomm控件在动态创建的时候就有这个licence的问题。而静态生成的时候回是正确的!
  • 打赏
  • 举报
回复
zjg751206 2003-10-22
好像和licence没有关系。
你把控件COPY到网页的文件夹中,然后修改网页代码,修改好后重新注册控件,注册后把网页重新发到服务器空间中,应该可以看见了,
我建议你把网页和控件放到一起吧,也就是同一个目录夹中,
<OBJECT
classid="clsid:2B43D376-3BCD-4E15-B496-4660662DC6C6"
codebase="Recorder.ocx"
width=350
height=250
align=center
hspace=0
vspace=0
>
  • 打赏
  • 举报
回复
haoel 2003-10-22
好像和licence没有关系。
  • 打赏
  • 举报
回复
haoel 2003-10-21
如何安装licence???
  • 打赏
  • 举报
回复
haoel 2003-10-20
现在的问题是:

我用VC做了一个ActiveX控件,要在WEB中使用,
在访问WEB服务器过程中,也出现了控件下载的对话框,
点击确定以后,但在网页上没有出现控件样子。

用VC的工具OLE View查看后,发现控件已被注册,
但要Create Instance时,出现以下错误:
"class is not licensed for use"

请问我该如何解决?


http://expert.csdn.net/Expert/TopicView1.asp?id=2374162
  • 打赏
  • 举报
回复
warmchang 2003-10-20
你所调用的控件需要的licence证书没有安装!
  • 打赏
  • 举报
回复
warmchang 2003-10-15
可以参照我回复的另外一个帖子:
http://expert.csdn.net/Expert/topic/2303/2303147.xml?temp=3.194827E-02

楼主好运,有什么不清楚的可以继续问,^_^
  • 打赏
  • 举报
回复
alornwolf 2003-10-15
activex控件要在WEB上发布,需要签名才行的!
  • 打赏
  • 举报
回复
gjd111686 2003-10-15
codebase指向一个CAB文件,你的ActiveX需要发布[即加数字签名,需要购买]
再说,不能为了运行ActiveX而降低了IE的安全级,你需要在ActiveX中注册控件安全分类.
在网上你可以查到的.
  • 打赏
  • 举报
回复
发帖
ATL
加入

3231

社区成员

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
申请成为版主
帖子事件
创建了帖子
2003-10-15 11:12
社区公告
暂无公告