silverlight   发布时间:2022-05-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了关于MSCOMM32.OCX控件的使用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

公司的一个产品,SilverLight开发的,要用热敏打印机(COM口的),所以才跟MSCOMM32.ocx打上交道。这玩意儿是有安全漏洞的,所以在XP里,微软已经不提供了,而且,有一个安全补丁,编号忘记了,用来防止IE加载它。也就是说,即使拷贝了文件,注册了,等等,不搞定这个补丁也是不成的。折腾了两天,看了好多网页,终于算是弄好了。下面说下要点。 环境:XP+IE 6 0、先备一个测试文档,如果

公司的一个产品,SilverLight开发的,要用热敏打印机(COM口的),所以才跟MSCOMM32.ocx打上交道。这玩意儿是有安全漏洞的,所以在XP里,微软已经不提供了,而且,有一个安全补丁,编号忘记了,用来防止IE加载它。也就是说,即使拷贝了文件注册了,等等,不搞定这个补丁也是不成的。折腾了两天,看了好多网页,终于算是弄好了。下面说下要点。


环境:XP+IE 6

0、先备一个测试文档,如果用IE打开这个文档,并能够驱动打印机,那么说明控件加载没问题。源码在下面。存成一个html文件就行。

<html>
<head>
<Meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<Meta http-equiv="Content-Language" content="en-us">
<title>Test Print</title>
</head>
<script language="javascript">
@R_738_3816@ init(){document.all.printport.PortOpen = true; }
@R_738_3816@ doprint(printmsg){  document.all.printport.output = printmsg + "\r\n" + "\r\n" + "\r\n" + "\r\n"; }
@R_738_3816@ pageEnd(){  
  document.all.printport.PortOpen = false;
 }
</script>
<body  onload='init();' onunload='pageEnd();'>
<form method="POST" action="--WEBBOT-SELF--">
 <p><textarea rows="21" name="S1" cols="86"></textarea></p>
 <p><input type="button" value="Print" name="B1" onclick='doprint(document.all.S1.value);'></p>
 <p><object id="printport" classid="clsid:648A5600-2C6E-101B-82B6-000000000014" style="display:none">
  <param name="CommPort" value="1">
  <param name="DTREnable" value="0">
  <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></p>
</form>
</body>
</html>

1、先导入下面的注册文件,把安全补丁写入项卸载掉。

Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{648A5600-2C6E-101B-82B6-000000000014}]
[-HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905]

2、运行下面的批处理文件,拷贝文件注册

copy mscomm*.* %windir%\system32\ /y
Regsvr32 %windir%\system32\mscomm32.ocx /s
Regsvr32 %windir%\system32\actxprxy.dll /s
Regsvr32 %windir%\system32\shdocvw.dll /s
reg add "HKEY_CLASSES_ROOT\Licenses\4250E830-6AC2-11cf-8ADB-00AA00C00905" /v "" /d "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun" /f
pause

注意,批处理文件所在目录下一定要放@L_905_0@mSCOMM32.oCX,否则会报错

3、用IE打开前文第0步的html文件,会有提示,说明有ActiveX控件,同意载入就行了。这时候,应该能够打印了。


其它的:

--有些PC上现在已经没有COM口了,一般的做法是将COM设备通过一个COM转USB的转接头联入PC。此时推荐用自动分配的COM口号,改成别的,有可能驱动不了;

--Windows 7 x64下没弄成;

--XP+IE 7 也没成功;


另外,感谢网上写帖子解决此问题的人,记不住名字了,但上面写的都是从他们的文章里看来的。

大佬总结

以上是大佬教程为你收集整理的关于MSCOMM32.OCX控件的使用全部内容,希望文章能够帮你解决关于MSCOMM32.OCX控件的使用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。