工控编程吧
标题:
362上位机VC MFC使用配制文件INI注册软件
[打印本页]
作者:
qq263946146
时间:
2016-9-18 20:46
标题:
362上位机VC MFC使用配制文件INI注册软件
(, 下载次数: 1)
上传
点击文件名下载附件
使用配制文件INI注册软件
功能展示
我们项目工程发布后为了实现盈利及软件被用户更多为广泛的传播使用,我们就会想给软件添加注册功能,只有用户使用我们提供的信息如注册码等注册了软件后,才能够使用软件或解开软件的锁定功能,我们当前就利用INI文件实现软件的注册,效果如图,输入用户名,手机,注册码后点击注册软件就可将软件注册,注册信息每个软件都不一样,由我们卖给用户;
要点提示
INI文件数据的读取可以用函数GetPrivateProfileString() ,软件运行时会调用函数读取INI文件的注册信息,获取的信息与我们卖给用户的信息进行对比,相同侧软已注册,不同则未注册;
软件注册时会通过WritePrivateProfileString()函数将用户输入的信息保存到INI文件中,同时将输入的信息与我们提供的信息进行对比;
BOOL WritePrivateProfileString( LPCTSTR lpAppName, // pointer to section name LPCTSTR lpKeyName, // pointer to key name LPCTSTR lpString, // pointer to string to add LPCTSTR lpFileName // pointer to initialization filename );
DWORD GetPrivateProfileString( LPCTSTR lpAppName, // points to section name LPCTSTR lpKeyName, // points to key name LPCTSTR lpDefault, // points to default string LPTSTR lpReturnedString, // points to destination buffer DWORD nSize, // size of destination buffer LPCTSTR lpFileName // points to initialization filename );
LPCTSTR lpAppName 是INI文件中的一个字段名
LPCTSTR lpKeyName 是lpAppName下的一个键名,通俗讲就是变量名.
LPCTSTR lpString 是键值,也就是变量的值,不过必须为LPCTSTR型或CString型的.
LPCTSTR lpFileName 是完整的INI文件名,如果没有指定完整路径名,则会在windows目录(默认)查找文件。如果文件没有找到,则函数会在windows目录创建它。
实现功能
1.新建基于对话框的应用程序
2.添加一函数及变量并初始化
private:
CString UnEncrypt(char* strcode);
CString m_sMachineNum;//卖出的固定机器码
CString m_sUserName;
CString m_sUserPhone;
CString m_sWindowText; //窗口标题
CString m_sFilePath;
m_sMachineNum = "0123456701234567";//每个软件固定机器码
m_sUserName = "工控编程吧";//卖给用户的固定用户名
m_sUserPhone = "13459007704";//卖给用户的固定手机号
//卖给用户的固定注册码是 SRQPWVUTSRQPWVUT
char Path[_MAX_PATH];
::GetCurrentDirectory(_MAX_PATH,Path);
strcat(Path,"\\gkbc8_com_reg.ini");
m_sFilePath = Path;
GetWindowText(m_sWindowText);
char UserName[_MAX_PATH];
char UserPhone[_MAX_PATH];
char RegCode[_MAX_PATH];
GetPrivateProfileString("Registration","UserName","",UserName,_MAX_PATH,Path);
GetPrivateProfileString("Registration","UserPhone","",UserPhone,_MAX_PATH,Path);
GetPrivateProfileString("Registration","RegCode","",RegCode,_MAX_PATH,Path);
CString sTemp = m_sMachineNum;
CString sEncrypt = UnEncrypt(sTemp.GetBuffer(0));
if(sEncrypt.Compare(m_sMachineNum) || m_sUserName.Compare(UserName) || m_sUserPhone.Compare(UserPhone))
SetWindowText(m_sWindowText+"_未注册");
3.添加编辑框IDC_EDIT1,IDC_EDIT2,IDC_EDIT3分别对应用户名,手机,注册码,再添加按钮<注册软件>关联点击函数实现软件注册
void CGkbc8Dlg::OnRegister()
{
CString sUserName,sUserPhone,sRegCod;
GetDlgItemText(IDC_EDIT1,sUserName);
GetDlgItemText(IDC_EDIT2,sUserPhone);
GetDlgItemText(IDC_EDIT3,sRegCod);
WritePrivateProfileString(_T("Registration"),_T("UserName"),_T(sUserName),_T(m_sFilePath));
WritePrivateProfileString(_T("Registration"),_T("UserPhone"),_T(sUserPhone),_T(m_sFilePath));
WritePrivateProfileString(_T("Registration"),_T("RegCode"),_T(sRegCod),_T(m_sFilePath));
if(m_sMachineNum==UnEncrypt(sRegCod.GetBuffer(0)) && m_sUserName.Compare(sUserName)==0 && m_sUserPhone.Compare(sUserPhone)==0)
{
AfxMessageBox("注册成功");
SetWindowText(m_sWindowText);
}
}
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/bc032edb27e7d5788b3469101a41dc9e/0/0/w_19rswlajt1.swf-albumId=6296228009-tvId=6296228009-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件 [weixinlianxi]1[/weixinlianxi]
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4