在asp中使用mscomct2.ocx控件的客户端注册问题~~~~~~~~~~~~~~~~~

springRainyao 2004-07-05 05:11:10
因为asp页面用到mscomct2.ocx里面的一个DTPicker时间控件,所以从http://activex.microsoft.com/controls/vb6/MSComCt2.cab下载了一cab文件用在页面中:
<OBJECT id=dt_start style="WIDTH: 140px; HEIGHT: 25px" width=50 height=20 classid=clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1
codebase="MSCOMCT2.CAB" VIEWASTEXT>
.........</OBJECT>
classid是从Microsoft Visual InterDev 6.0引用此控件得到的,
codebase="MSCOMCT2.CAB" 此cab是放在页面同一目录下
上述<OBJECT...>语法用自己生成的第三方cab客户端会提示安装此cab,但在此控件中完全没反应

请指教!
...全文
272 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyangcheng 2004-08-12
  • 打赏
  • 举报
回复
楼上的这种方法用VC如何实现呀?
pwxing 2004-08-08
  • 打赏
  • 举报
回复
要想客户端自动下载注册
你可以使用VB自带的打包工具把OCX打包成internet包,
它会生成一下CAB压缩文件及一个显示的HTM文件,参照该HTM文件来使用OCX控件!

OCX打包成internet包:

菜单“外接程序”-》“外接程序管理器”-》启用“打包和展开向导”
开始打包:菜单“外接程序”-》“打包和展开向导”
打包成internet包:
选“打包”,在选择包类型时选“internet软件包”....

在htm中使用OCX包:
把OCX中打包好internet包后,在CAB包所在目录存在一下与控件同名的HTM文件,该文件存在该控件的CLASSID,使用该ID就可以在HTM中引用打包的OCX控件了。如下:
<OBJECT ID="xxx"
CLASSID="..."
CODEBASE="xxx.CAB#version=...">
</OBJECT>


调用时只要把CODEBASE="xxx.CAB#version=..."路径设置对了(cab文件路径),在客户端的ie-安全
把一些项设置为启用,客户端就自动下载注册了
springRainyao 2004-08-06
  • 打赏
  • 举报
回复
any body here???
springRainyao 2004-07-13
  • 打赏
  • 举报
回复
?
jensan 2004-07-12
  • 打赏
  • 举报
回复
顶!
springRainyao 2004-07-08
  • 打赏
  • 举报
回复
ding~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
niaoked 2004-07-06
  • 打赏
  • 举报
回复
能不能考虑像ADO组件一样,组件在服务器是运用呢
关注
dullwolf 2004-07-06
  • 打赏
  • 举报
回复
页面安全问题不会允许这么做,还有doevents的问题等等。

如果实在想实验,你实验一下下面代码,我笔记本没串口。
我模拟了一个doevent,不知道可以不。

<TEXTAREA rows=20 cols=20 id=textarea1 >

</TEXTAREA>
<OBJECT id=MSComm1 style="LEFT: 0px; TOP: 0px" classid="clsid:648A5600-2C6E-101B-82B6-000000000014" VIEWASTEXT>
<PARAM NAME="_ExtentX" VALUE="1005">
<PARAM NAME="_ExtentY" VALUE="1005">
<PARAM NAME="_Version" VALUE="393216">
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="63">
<PARAM NAME="RThreshold" VALUE="0">
<PARAM NAME="RTSEnable" VALUE="0">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="ParitySetting" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="0">
<PARAM NAME="SThreshold" VALUE="0">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0"></OBJECT>
<button onclick="vbs:stopRead">停止</button>
<SCRIPT LANGUAGE=vbscript >
' 保存输入子串的缓冲区
Dim Instring ,Buffer
' 使用 COM1。
MSComm1.CommPort = 1
' 9600 波特,无奇偶校验,8 位数据,一个停止位。
MSComm1.Settings = "9600,N,8,1"
' 当输入占用时,
' 告诉控件读入整个缓冲区。
MSComm1.InputLen = 0
' 打开端口。
MSComm1.PortOpen = True
' 将 attention 命令送到调制解调器。
MSComm1.Output = "ATV1Q0" & Chr(13) ' 确保
' 调制解调器以"OK"响应。
' 等待数据返回到串行端口。

Buffer=""

'DoEvents
dim myTimmer
myDoEvents
sub myDoEvents()
if InStr(Buffer, "OK" & vbCRLF) then
' 从串行端口读 "OK" 响应。读到退出
stopRead
exit sub
end if
Buffer = Buffer & MSComm1.Input
myTimmer = window.setTimeout( "myDoEvents",1,"vbscript")
end sub

sub stopRead()
window.clearTimeout myTimmer
textarea1.value = Buffer
' 关闭串行端口。

MSComm1.PortOpen = False
end sub

Sub MSComm_OnComm()
textarea1.value = cstr(MSComm1.CommEvent)
End Sub

</SCRIPT>
springRainyao 2004-07-06
  • 打赏
  • 举报
回复
顶~~
请大家帮忙,分不够可以加啊
springRainyao 2004-07-06
  • 打赏
  • 举报
回复
请教~~~~~~~~~
jensan 2004-07-06
  • 打赏
  • 举报
回复
gz
springRainyao 2004-07-06
  • 打赏
  • 举报
回复
多谢 dullwolf(超级大笨狼过程版(★★))
不过我使用的是下面的ocx,而且因为是局域网所以都设置了可信任站点,安全方面是不用考虑的
MSComCt2.ocx Microsoft Windows Common Controls-2 6.0
Version: 6.00.8177
Size: 644,400 bytes
Source Directory: \os\system
Controls: Animation
UpDown
MonthView
DTPicker //使用的只是这一个控件
FlatScrollBar
再请教!
springRainyao 2004-07-05
  • 打赏
  • 举报
回复
谢谢 wsb1979(春天的虫子)
如果要在每个客户端注册一次(regsvr32.exe mscomct2.ocx)基本上是不可能的,而在IIS服务器上注册过,对客户端是没有效果的,
classid param...这些都是InterDev 6生成的,在服务器上运行完全没问题,关键是在没有windows2000 sp4(此控件是win2k sp4带的)版本的客户端上,不会跟用第三方控件一样提示注册(客户端已经设置了可信任站点,安全级别是不用考虑的)

是不是这个控件还需要其它控件的支持?是哪个或哪些呢??
wsb1979 2004-07-05
  • 打赏
  • 举报
回复
运行----regsvr32.exe mscomct2.ocx
再到注册表里找到classid
<OBJECT id="xxxxxx" height="32" width="32" classid="clsid:xxxxxxxxxx" VIEWASTEXT>
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="847">
<PARAM NAME="_ExtentY" VALUE="847">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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