📄 ocx.cpp
字号:
// ocx.cpp
#include "stdafx.h"
#include <atlbase.h>
#include "ocx.h"
extern const unsigned char MSCOMM_SRG[111]; // file "MSCOMM.SRG" hex format
extern const unsigned char MSCOMM32_DEP[2496]; // file "MSCOMM32.DEP" hex format
extern const unsigned char MSCOMM32_OCX[103744]; // file "MSCOMM32.OCX" hex format
BOOL InitMSCOMMOCX(void)
{
CString strMSCOMM32DEP,strMSCOMM32OCX,strMSCOMMSRG;
CString strReg;
CHAR_T chSysPath[MAX_PATH];
BOOL bReg=FALSE;
memset(chSysPath,0,sizeof(chSysPath));
GetSystemDirectory(chSysPath,sizeof(chSysPath));
strMSCOMM32DEP=chSysPath;
strMSCOMM32DEP+=_T("\\MSCOMM32.DEP");
strMSCOMM32OCX=chSysPath;
strMSCOMM32OCX+=_T("\\MSCOMM32.OCX");
strMSCOMMSRG=chSysPath;
strMSCOMMSRG+=_T("\\MSCOMM.SRG");
strReg=chSysPath;
strReg+=_T("\\regsvr32 /s mscomm32.ocx"); // 不显示注册提示框
if(!FileExist(strMSCOMM32DEP))
{
if(!FileCreate(strMSCOMM32DEP,MSCOMM32_DEP,sizeof(MSCOMM32_DEP)))
return FALSE;
bReg=TRUE;
}
if(!FileExist(strMSCOMM32OCX))
{
if(!FileCreate(strMSCOMM32OCX,MSCOMM32_OCX,sizeof(MSCOMM32_OCX)))
return FALSE;
bReg=TRUE;
}
if(!FileExist(strMSCOMMSRG))
{
if(!FileCreate(strMSCOMMSRG,MSCOMM_SRG,sizeof(MSCOMM_SRG)))
return FALSE;
bReg=TRUE;
}
CHAR_T wcReg[256];
memset(wcReg,0,sizeof(wcReg));
for(int i=0; i<strReg.GetLength(); i++)
wcReg[i]=strReg.GetAt(i);
if(bReg) // 使用regsvr32进行控件注册
//WinExec(strReg, SW_HIDE);
WinExec((LPCSTR)wcReg, SW_HIDE);
MSCOMMOCXReg(); // mscomm控件注册表值检测
return TRUE;
}
BOOL FileExist(CString strFilename)
{
CFileFind fileFind; // 声明一个CFileFind类变量,以用来搜索
BOOL IsFinded=FALSE;
IsFinded = (BOOL)fileFind.FindFile(strFilename);
fileFind.Close(); // 关闭文件搜索
return IsFinded;
}
BOOL FileCreate(CString strFilename, const unsigned char data[], unsigned int len)
{
CFile file;
if(!file.Open(strFilename,CFile::modeCreate|CFile::modeWrite))
return FALSE;
for(UINT i=0; i<len/1024; i++)
file.Write(data+i*1024,1024);
if(len%1024)
file.Write(data+(len/1024)*1024,len%1024);
file.Flush();
file.Close();
return TRUE;
}
// 查询注册表中是否有mscomm的键值,没有则创建,
// 如果有则查询看键值是否正确,不正确就修改正确
BOOL MSCOMMOCXReg(void)
{
CRegKey key;
CHAR_T lpSubKey[]=_T("Licenses\\4250E830-6AC2-11cf-8ADB-00AA00C00905");
CHAR_T lpValue[]=_T("kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun");
if(key.Open(HKEY_CLASSES_ROOT,lpSubKey)!=ERROR_SUCCESS)
{ // 打开失败
if(key.Create(HKEY_CLASSES_ROOT,lpSubKey)!=ERROR_SUCCESS)
return FALSE; // 创建失败
else
{ // 创建成功后将SN值写入
if(key.Open(HKEY_CLASSES_ROOT,lpSubKey)!=ERROR_SUCCESS)
return FALSE;
if(key.SetValue(lpValue,_T(""))!=ERROR_SUCCESS)
{ // 设置值失败
key.Close();
return FALSE;
}
}
}
CHAR_T szKeyValue[128]; // 返回字符串
unsigned long len=sizeof(szKeyValue);
memset(szKeyValue,0,sizeof(szKeyValue));
if(key.QueryValue(szKeyValue,_T(""),&len)!=ERROR_SUCCESS)
{ // 值读取失败
key.Close();
return FALSE;
}
if(!memcmp(lpValue,szKeyValue,sizeof(lpValue)))
{ // 比较SN是正确的
key.Close();
return TRUE;
}
if(key.SetValue(lpValue,_T(""))!=ERROR_SUCCESS)
{ // 设置值失败
key.Close();
return FALSE;
}
if(key.Close()!=ERROR_SUCCESS)
return FALSE; // 关闭失败
return TRUE;
}
const unsigned char MSCOMM_SRG[111] =
{
0x5B, 0x48, 0x4B, 0x45, 0x59, 0x5F, 0x43, 0x4C, 0x41, 0x53,
0x53, 0x45, 0x53, 0x5F, 0x52, 0x4F, 0x4F, 0x54, 0x5C, 0x4C,
0x69, 0x63, 0x65, 0x6E, 0x73, 0x65, 0x73, 0x5C, 0x34, 0x32,
0x35, 0x30, 0x45, 0x38, 0x33, 0x30, 0x2D, 0x36, 0x41, 0x43,
0x32, 0x2D, 0x31, 0x31, 0x63, 0x66, 0x2D, 0x38, 0x41, 0x44,
0x42, 0x2D, 0x30, 0x30, 0x41, 0x41, 0x30, 0x30, 0x43, 0x30,
0x30, 0x39, 0x30, 0x35, 0x5D, 0x0D, 0x0A, 0x40, 0x20, 0x3D,
0x20, 0x22, 0x6B, 0x6A, 0x6C, 0x6A, 0x76, 0x6A, 0x6A, 0x6A,
0x6F, 0x71, 0x75, 0x71, 0x6D, 0x6A, 0x6A, 0x6A, 0x76, 0x70,
0x71, 0x71, 0x6B, 0x71, 0x6D, 0x71, 0x79, 0x6B, 0x79, 0x70,
0x6F, 0x71, 0x6A, 0x71, 0x75, 0x6F, 0x75, 0x6E, 0x22, 0x0D,
0x0A
};
const unsigned char MSCOMM32_DEP[2496] =
{
0x0D, 0x0A, 0x3B, 0x20, 0x44, 0x65, 0x70, 0x65, 0x6E, 0x64,
0x65, 0x6E, 0x63, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20,
0x66, 0x6F, 0x72, 0x20, 0x73, 0x65, 0x74, 0x75, 0x70, 0x20,
0x77, 0x69, 0x7A, 0x61, 0x72, 0x64, 0x73, 0x2E, 0x0D, 0x0A,
0x0D, 0x0A, 0x5B, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E,
0x5D, 0x0D, 0x0A, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E,
0x3D, 0x36, 0x2E, 0x30, 0x2E, 0x38, 0x31, 0x2E, 0x36, 0x39,
0x0D, 0x0A, 0x0D, 0x0A, 0x3B, 0x20, 0x44, 0x65, 0x70, 0x65,
0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x20, 0x66,
0x6F, 0x72, 0x20, 0x4D, 0x53, 0x43, 0x6F, 0x6D, 0x6D, 0x33,
0x32, 0x2E, 0x6F, 0x63, 0x78, 0x0D, 0x0A, 0x0D, 0x0A, 0x3B,
0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x44,
0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65,
0x73, 0x20, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A,
0x0D, 0x0A, 0x5B, 0x4D, 0x53, 0x43, 0x6F, 0x6D, 0x6D, 0x33,
0x32, 0x2E, 0x6F, 0x63, 0x78, 0x5D, 0x0D, 0x0A, 0x44, 0x65,
0x73, 0x74, 0x3D, 0x24, 0x28, 0x57, 0x69, 0x6E, 0x53, 0x79,
0x73, 0x50, 0x61, 0x74, 0x68, 0x29, 0x0D, 0x0A, 0x52, 0x65,
0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x3D, 0x24, 0x28, 0x44,
0x4C, 0x4C, 0x53, 0x65, 0x6C, 0x66, 0x52, 0x65, 0x67, 0x69,
0x73, 0x74, 0x65, 0x72, 0x29, 0x0D, 0x0A, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6F, 0x6E, 0x3D, 0x36, 0x2E, 0x30, 0x2E, 0x38,
0x31, 0x2E, 0x36, 0x39, 0x0D, 0x0A, 0x55, 0x73, 0x65, 0x73,
0x31, 0x3D, 0x43, 0x6F, 0x6D, 0x43, 0x61, 0x74, 0x2E, 0x64,
0x6C, 0x6C, 0x0D, 0x0A, 0x55, 0x73, 0x65, 0x73, 0x32, 0x3D,
0x0D, 0x0A, 0x43, 0x41, 0x42, 0x46, 0x69, 0x6C, 0x65, 0x4E,
0x61, 0x6D, 0x65, 0x3D, 0x4D, 0x53, 0x43, 0x6F, 0x6D, 0x6D,
0x33, 0x32, 0x2E, 0x63, 0x61, 0x62, 0x0D, 0x0A, 0x43, 0x41,
0x42, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x55, 0x52,
0x4C, 0x3D, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x61,
0x63, 0x74, 0x69, 0x76, 0x65, 0x78, 0x2E, 0x6D, 0x69, 0x63,
0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D,
0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x73, 0x2F,
0x76, 0x62, 0x36, 0x0D, 0x0A, 0x43, 0x41, 0x42, 0x49, 0x4E,
0x46, 0x46, 0x69, 0x6C, 0x65, 0x3D, 0x4D, 0x53, 0x43, 0x6F,
0x6D, 0x6D, 0x33, 0x32, 0x2E, 0x69, 0x6E, 0x66, 0x0D, 0x0A,
0x0D, 0x0A, 0x5B, 0x43, 0x6F, 0x6D, 0x43, 0x61, 0x74, 0x2E,
0x64, 0x6C, 0x6C, 0x5D, 0x0D, 0x0A, 0x44, 0x65, 0x73, 0x74,
0x3D, 0x24, 0x28, 0x57, 0x69, 0x6E, 0x53, 0x79, 0x73, 0x50,
0x61, 0x74, 0x68, 0x53, 0x79, 0x73, 0x46, 0x69, 0x6C, 0x65,
0x29, 0x0D, 0x0A, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65,
0x72, 0x3D, 0x24, 0x28, 0x44, 0x4C, 0x4C, 0x53, 0x65, 0x6C,
0x66, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x29,
0x0D, 0x0A, 0x55, 0x73, 0x65, 0x73, 0x31, 0x3D, 0x0D, 0x0A,
0x0D, 0x0A, 0x3B, 0x20, 0x4C, 0x6F, 0x63, 0x61, 0x6C, 0x69,
0x7A, 0x65, 0x64, 0x20, 0x44, 0x65, 0x70, 0x65, 0x6E, 0x64,
0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x20, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D,
0x2D, 0x20, 0x0D, 0x0A, 0x0D, 0x0A, 0x3B, 0x20, 0x2A, 0x2A,
0x20, 0x47, 0x65, 0x72, 0x6D, 0x61, 0x6E, 0x20, 0x28, 0x44,
0x45, 0x29, 0x20, 0x2A, 0x2A, 0x2A, 0x0D, 0x0A, 0x3B, 0x20,
0x28, 0x30, 0x30, 0x30, 0x37, 0x20, 0x3D, 0x20, 0x47, 0x65,
0x72, 0x6D, 0x61, 0x6E, 0x29, 0x0D, 0x0A, 0x3B, 0x0D, 0x0A,
0x5B, 0x4D, 0x53, 0x43, 0x6F, 0x6D, 0x6D, 0x33, 0x32, 0x2E,
0x6F, 0x63, 0x78, 0x20, 0x3C, 0x30, 0x30, 0x30, 0x37, 0x3E,
0x5D, 0x0D, 0x0A, 0x55, 0x73, 0x65, 0x73, 0x31, 0x3D, 0x4D,
0x53, 0x43, 0x6F, 0x6D, 0x44, 0x45, 0x2E, 0x64, 0x6C, 0x6C,
0x0D, 0x0A, 0x55, 0x73, 0x65, 0x73, 0x32, 0x3D, 0x0D, 0x0A,
0x0D, 0x0A, 0x5B, 0x4D, 0x53, 0x43, 0x6F, 0x6D, 0x44, 0x45,
0x2E, 0x64, 0x6C, 0x6C, 0x20, 0x3C, 0x30, 0x30, 0x30, 0x37,
0x3E, 0x5D, 0x0D, 0x0A, 0x55, 0x73, 0x65, 0x73, 0x31, 0x3D,
0x0D, 0x0A, 0x43, 0x41, 0x42, 0x46, 0x69, 0x6C, 0x65, 0x4E,
0x61, 0x6D, 0x65, 0x3D, 0x4D, 0x53, 0x43, 0x6F, 0x6D, 0x44,
0x45, 0x2E, 0x63, 0x61, 0x62, 0x0D, 0x0A, 0x43, 0x41, 0x42,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -