VC++ 6.0 中使用 MSComm.ocx

很多人喜欢单独安装VC++6.0,而不是完整安装VS,这样占用空间比较少,启动也快。但是要使用某些ActiveX控件的时候却会出现许可证问题(requires a design-time licence),譬如使用MSComm.ocx。至于ActiveX的许可证体系这里就不说了,简单说就是用来保证第三方ActiveX控件开发者的智力投资的。MSComm.ocx是VS自带的一个进行串口通讯的控件,本来在安装VS的时候会自动把相应的licence发放给用户,但是这个licence是由VB附带提供的,现在我们没有安装VB,因此当我们在插入该控件到我们的项目时,就会出现上述的许可证问题。     我们可以通过安装VB6.0来解决这个问题,但是如果我们平时很少用VB,就为了这个控件而安装的话就有点大材小用了,而且也违背了当初单独安装VC++的初衷。下面还有另外一种方法:在文本文件中输入(注意格式)

REGEDIT4 [HKEY_CLASSES_ROOTLicenses4250E830-6AC2-11cf-8ADB-00AA00C00905] @ = "kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun"

另存为一个注册表文件,如 lic.reg。然后双击。。好了,控件可以使用了。

update:下面的注册表文件更加全面。

REGEDIT HKEY_CLASSES_ROOTLicenses = Licensing: Copying the keys may be a violation of established copyrights.
// Masked Edit Control 6.0 license key HKEY_CLASSES_ROOTLicensesBC96F860-9928-11cf-8AFA-00AA00C00905 = mmimfflflmqmlfffrlnmofhfkgrlmmfmqkqj
// Chart Control 6.0 (OLEDB) license key HKEY_CLASSES_ROOTLicenses12B142A4-BD51-11d1-8C08-0000F8754DA1 = aadhgafabafajhchnbchehfambfbbachmfmb
// Common Dialog Control 6.0 license key HKEY_CLASSES_ROOTLicenses4D553650-6ABE-11cf-8ADB-00AA00C00905 = gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj
// ADO Data Control 6.0 (OLEDB) license key HKEY_CLASSES_ROOTLicensesC4145310-469C-11d1-B182-00A0C922E820 = konhqhioohihphkouimonhqhvnwiqhhhnjti
// Common Controls-3 6.0 license key HKEY_CLASSES_ROOTLicenses38911DA0-E448-11D0-84A3-00DD01104159 = mcpckchcdchjcjcclidcgcgchdqdcjhcojpd
// Windows Common Controls-2 5.0 (SP2) license key HKEY_CLASSES_ROOTLicenses9E799BF1-8817-11cf-958F-0020AFC28C3B = uqpqnqkjujkjjjjqwktjrjkjtkupsjnjtoun
// Windows Common Controls license key HKEY_CLASSES_ROOTLicenses57CBF9E0-6AA7-11cf-8ADB-00AA00C00905 = aahakhchghkhfhaamghhbhbhkbpgfhahlfle
// Data Bound Grid Control 5.0(SP3) license key HKEY_CLASSES_ROOTLicenses556C75F1-EFBC-11CF-B9F3-00A0247033C4 = xybiedobrqsprbijaegcbislrsiucfjdhisl
// Data Bound List Controls 6.0 license key HKEY_CLASSES_ROOTLicenses96EFC40-6ABF-11cf-850C-08002B30345D = knsgigmnmngnmnigthmgpninrmumhgkgrlrk
// Internet Transfer Control 6.0 license key HKEY_CLASSES_ROOTLicenses78E1BDD1-9941-11cf-9756-00AA00C00908 = yjrjvqkjlqqjnqkjvprqsjnjvkuknjpjtoun
// Multimedia Control 6.0 license key HKEY_CLASSES_ROOTLicensesB1EFCCF0-6AC1-11cf-8ADB-00AA00C00905 = qqkjvqpqmqjjpqjjvpqqkqmqvkypoqjquoun
// Chart Control 6.0 license key HKEY_CLASSES_ROOTLicenses7C35CA30-D112-11cf-8E72-00A0C90F26F8 = whmhmhohmhiorhkouimhihihwiwinhlosmsl
// Windows Common Controls-2 6.0 license key HKEY_CLASSES_ROOTLicenses4F86BADF-9F77-11d1-B1B7-0000F8753F5D = iplpwpnippopupiivjrioppisjsjlpiiokuj
// Windows Common Controls 6.0 license key HKEY_CLASSES_ROOTLicensesED4B87C4-9F76-11d1-8BF7-0000F8754DA1 = knlggnmntgggrninthpgmnngrhqhnnjnslsh
// Comm Control 6.0 license key HKEY_CLASSES_ROOTLicenses4250E830-6AC2-11cf-8ADB-00AA00C00905 = kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun
// DataGrid Control 6.0 (OLEDB) license key HKEY_CLASSES_ROOTLicensesCDE57A55-8B86-11D0-b3C6-00A0C90AEA82 = ekpkhddkjkekpdjkqemkfkldoeoefkfdjfqe
// DataList Control 6.0 (OLEDB) license key HKEY_CLASSES_ROOTLicensesA133F000-CCB0-11d0-A316-00AA00688B10 = cibbcimbpihbbbbbnhdbeidiocmcbbdbgdoc
// DBWin license key HKEY_CLASSES_ROOTLicensesD015B071-D2ED-11d0-A31A-00AA00688B10 = gjdcfjpcmjicjcdcoihcechjlioiccechepd
// MSDBRPT license key HKEY_CLASSES_ROOTLicenses9DF1A470-BA8E-11D0-849C-00A0C90DC8A9 = cchcqjejhcgcqcfjpdfcdjkckiqikchcojpd
// FlexGrid Control 6.0 license key HKEY_CLASSES_ROOTLicenses72E67120-5959-11cf-91F6-C2863C385E30 = ibcbbbebqbdbciebmcobmbhifcmciibblgmf
// MAPI Controls 6.0 license key HKEY_CLASSES_ROOTLicenses899B3E80-6AC6-11cf-8ADB-00AA00C00905 = wjsjjjlqmjpjrjjjvpqqkqmqukypoqjquoun
// MSRDO 2.0 license key HKEY_CLASSES_ROOTLicensesB1692F60-23B0-11D0-8E95-00A0C90F26F8 = mjjjccncgjijrcfjpdfjfcejpdkdkcgjojpd
// RemoteData Control 6.0 license key HKEY_CLASSES_ROOTLicenses43478d75-78e0-11cf-8e78-00a0d100038e = imshohohphlmnhimuinmphmmuiminhlmsmsl
// Windowless Controls 6.0 license key HKEY_CLASSES_ROOTLicenses80E80EF0-DBBE-11D0-BCE2-00A0C90DCA10 = qijimitpmpnpxplpvjnikpkpqoxjmpkpoivj
// PictureClip Control 6.0 license key HKEY_CLASSES_ROOTLicenses6FB38640-6AC7-11cf-8ADB-00AA00C00905 = gdjkokgdldikhdddpjkkekgknesjikdkoioh
// Rich TextBox Control 6.0 license key HKEY_CLASSES_ROOTLicensesDC4D7920-6AC8-11cf-8ADB-00AA00C00905 = iokouhloohrojhhhtnooiokomiwnmohosmsl
// Sheridan Tab Control license key HKEY_CLASSES_ROOTLicenses190B7910-992A-11cf-8AFA-00AA00C00905 = gclclcejjcmjdcccoikjlcecoioijjcjnhng
// SysInfo Control 6.0 license key HKEY_CLASSES_ROOTLicensesE32E2733-1BC5-11d0-B8C3-00A0C90DCA10 = kmhfimlflmmfpffmsgfmhmimngtghmoflhsg
// Winsock Control 6.0 license key HKEY_CLASSES_ROOTLicenses2c49f800-c2dd-11cf-9ad6-0080c7e7b78d = mlrljgrlhltlngjlthrligklpkrhllglqlrk
 
 
 
 
 
 
 
 
 
 
 
  1. 先下载一个文件,下载地址:

    http://download.csdn.net/download/rabbit200808/3236756

    压缩包包含四个文件:MSCOMM.SRG、MSCOMM32.DEP、MSCOMM32.oca、mscomm32.ocx;

    解压后拷贝到:

    C:WindowsSystem32(WIN7系统);

    C:WINDOWSsystem32(XP系统)。

    注意:64位win7系统还需要将mscomm32.ocx文件复制到C:WindowsSysWOW64目录下,否则后面注册会出错。

  2.  

    在C:WindowsSystem32里找到cmd.exe以管理员身份运行:

    Regsvr32  C:WINDOWSsystem32MSCOMM32.OCX

    注册成功如图所示:

    vs2013中MSComm通讯控件的导入和注意事项
  3.  

    修改注册表:win+R组合键打开“运行”或者直接在开始菜单里找到“运行”;输入regedit后回车,打开注册表管理器,在其中找到HKEY_CLASSES_ROOT项下的Licenses项,添加主项命名为“4250E830-6AC2-11cf-8ADB-00AA00C00905”,并将键值修改为“kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”

    vs2013中MSComm通讯控件的导入和注意事项
  4.  

    新建MFC工程:在VS 2013中新建一个MFC项目,比如基于对话框的一个项目

    vs2013中MSComm通讯控件的导入和注意事项
  5.  

    添加MSComm控件:在对话框上右击选择“打开ActiveX控件”,英文版“InsertActiveX Control”找到Microsoft Communications Control,version 6.0,此时在对话框中出现一个电话一下的按钮,这个就是MSComm控件,软件运行时是看不见的

    vs2013中MSComm通讯控件的导入和注意事项
    vs2013中MSComm通讯控件的导入和注意事项
  6.  

    添加控件的另外一种方法是在 菜单栏 工具》选择工具箱项》COM组件

    然后找到Microsoft Communications Control,version 6.0

    vs2013中MSComm通讯控件的导入和注意事项
  7.  

    MSComm控件函数使用:新版本的Visual studio使用MSComm时之前很多以Set开头或者Get开头的函数都改成了以Put_开头或者Get_开头。

    如之前的SetCommPort改成了Put_CommPort;

                 GetInput     改成了Get_Input;

  8.  

    MSComm控件Create()函数运行时报错问题:

    程序编译通过但运行时报错如图,解决方法:

    对于MSComm的关联变量在创建前需要先销毁窗口,如下程序段:

           mycomm.DestroyWindow();           //mycomm为MSComm的关联变量

           if(!mycomm.Create(NULL,style,CRect(0,0,0,0),this,IDC_MSCOMM1))

           {

                  AfxMessageBox("创建MSComm控件失败");

                  return -1;

           }

    vs2013中MSComm通讯控件的导入和注意事项

dlg点鼠标右键,选:insert activex control...

然后从列表里找即可

原文地址:https://www.cnblogs.com/haimishasha/p/5043527.html