Files
LM-Middleware/HSI_HexagonMI_EF3/CLMS.cpp
T
2025-02-18 18:01:50 +08:00

167 lines
4.7 KiB
C++

#include "stdafx.h"
#include "CLMS.h"
#include "logger.h"
using namespace std;
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
///////////////////////////////////////////////////////////////////////////////动态引用
HINSTANCE m_hCLM;
/// <summary>
/// 功能:使用MORCODE.DLL前验证使用软件是否正确,否则其他函数都不可正常调用
/// </summary>
/// <param name="_Massage">验证内容为软件指纹文件中字符串</param>
/// <returns>
/// TRUE :该软件可正常调用
/// FALSE :该软件不可正常调用
/// </returns>
typedef BOOL(WINAPI* CLM_Login)(char* _Massage);
CLM_Login m_pCLM_Login;
/// <summary>
/// 退出前执行一次,释放内存,记录使用信息
/// </summary>
/// <returns></returns>
typedef BOOL(WINAPI* CLM_Logout)();
CLM_Logout m_pCLM_Logout;
/// <summary>
/// 自动检查电脑中是否有当前软件的许可信息,过期/非本机电脑/其他软件 的许可证书都不会识别
/// </summary>
/// <returns>
/// TRUE :有该软件许可证书
/// FALSE :没有该软件许可证书
/// </returns>
typedef BOOL(WINAPI* CLM_Login_Scope)();
CLM_Login_Scope m_pCLM_Login_Scope;
/// <summary>
/// 输入模块ID验证模块可用性,输入CLMS服务器中模块ID -1(如服务器中模块ID为1,则mod参数输入0)
/// </summary>
/// <param name="_MOD">模块ID-1</param>
/// <param name="_OnLineType">暂无定义</param>
/// <returns>
/// TRUE :该模块可用
/// FALSE :该模块不可用
/// </returns>
typedef BOOL(WINAPI* CLM_ModuleIsLicensed)(UINT16& _MOD, UINT16& _OnLineType);
CLM_ModuleIsLicensed m_pCLM_ModuleIsLicensed;
/// <summary>
/// 获取到期日期
/// </summary>
/// <param name="_Month">月</param>
/// <param name="_Day">日</param>
/// <param name="_Year">年</param>
/// <returns></returns>
typedef BOOL(WINAPI* CLM_GetWarrantyExpiration)(int& _Month, int& _Day, int& _Year);
CLM_GetWarrantyExpiration m_pCLM_GetWarrantyExpiration;
/// <summary>
/// 输入模块ID获取该模块过期时间,输入CLMS服务器中模块ID -1(如服务器中模块ID为1,则mod参数输入0)
/// </summary>
/// <param name="_MOD">模块ID-1</param>
/// <param name="_Day">日</param>
/// <param name="_Month">月</param>
/// <param name="_Year">年</param>
/// <returns>
/// TRUE :时间有效
/// FALSE :该软件不可正常调用
/// </returns>
typedef BOOL(WINAPI* CLM_GetExpirationDateFor)(const int _MOD, int& _Day, int& _Month, int& _Year);
CLM_GetExpirationDateFor m_pCLM_GetExpirationDateFor;
BOOL CheckLicense()
{
m_hCLM = LoadLibrary(_T("CLMTool.dll"));
if (m_hCLM)
{
if (g_pLogger)
{
g_pLogger->SendAndFlushWithTime(L"CLMTool.dll Load Success");
}
//Production
m_pCLM_Login = (CLM_Login)GetProcAddress(m_hCLM, "CLM_Login");
m_pCLM_Logout = (CLM_Logout)GetProcAddress(m_hCLM, "CLM_Logout");
m_pCLM_Login_Scope = (CLM_Login_Scope)GetProcAddress(m_hCLM, "CLM_Login_Scope");
m_pCLM_ModuleIsLicensed = (CLM_ModuleIsLicensed)GetProcAddress(m_hCLM, "CLM_ModuleIsLicensed");
m_pCLM_GetExpirationDateFor = (CLM_GetExpirationDateFor)GetProcAddress(m_hCLM, "CLM_GetExpirationDateFor");
m_pCLM_GetWarrantyExpiration = (CLM_GetWarrantyExpiration)GetProcAddress(m_hCLM, "CLM_GetWarrantyExpiration");
}
else
{
if (g_pLogger)
{
g_pLogger->SendAndFlushWithTime(L"CLMTool.dll Load Failed");
}
return FALSE;
}
//////////////////////////////////////////////////////////////////1登陆验证
BOOL res = FALSE;
//Metus软件
char* strLogin = "rsWoGvmINesgabljzJZpTmMRGMLyKxFsaxpLRZSnpsujYlboLaKwSINrFbtddgMYgsXkCLwxfVUALwfQcxWEbvZZHjrrYwRkNCBMsjfxeKyannbTIVxsrQvLUWraoysNJFcYJrYnCSabWnxgezkDbvwHLksNqdWyvrfHqKeBLyyVyVYROgizPCqVaRQLkNrSROgvbAqShNZNuzKGHjOLYiwLaXnPKgvHcXuNeNLyuGMFeDnpiipTVDrvJaoNXDTq";
res = m_pCLM_Login(strLogin);
if (!res)
{
//登陆验证失败
if (g_pLogger) {
g_pLogger->SendAndFlushWithTime(L"登陆验证失败");
}
return res;
}
//////////////////////////////////////////////////////////////////2检查许可
res = m_pCLM_Login_Scope();
if (!res)
{
//检查许可失败
if (g_pLogger) {
g_pLogger->SendAndFlushWithTime(L"检查许可失败");
}
return res;
}
//////////////////////////////////////////////////////////////////3获取许可模块
UINT16 Mod = 7;// 对应模块ID,8为模块ID-1, 表示直线电机中间件
UINT16 OnLineType = 0;//许可状态
res = m_pCLM_ModuleIsLicensed(Mod, OnLineType);
if (!res)
{
//登陆验证失败
if (g_pLogger) {
g_pLogger->SendAndFlushWithTime(L"登陆验证失败");
}
return res;
}
//////////////////////////////////////////////////////////////////4获取许可最早到期日期
int ModuleID = 2;
int Year, Month, Day;
res = m_pCLM_GetWarrantyExpiration(Month, Day, Year);//获取过期时间
if (!res)
{
//登陆验证失败
if (g_pLogger) {
g_pLogger->SendAndFlushWithTime(L"获取过期时间失败");
}
return res;
}
//打印到期时间
CString expirationDate;
expirationDate.Format(_T("到期时间为:%d年%d月%d日"), Year, Month, Day);
if (g_pLogger) {
g_pLogger->SendAndFlushWithTime(expirationDate);
}
return res;
}