限制软件使用时间

本文介绍了一种软件试用版的时间限制实现方法,通过记录软件的编译时间和计算当前时间与编译时间之间的差值来判断是否超过了设定的试用期限。

对于软件产品的试用版来说,限制软件使用是必不可少的。本文介绍如果限制使用时间。

假设软件A可以免费使用3个月,那么要确定的是开始使用时间,结束时间

1。确定开始使用时间。如下代码:

#include "windows.h" #include "stdio.h" int main(int argc, char* argv[]) { SYSTEMTIME currentTime; GetSystemTime(&currentTime); FILE *fp = fopen("out_date.h","w"); fprintf( fp, "#ifndef _OUT_DATA_H/n" "#define _OUT_DATA_H/n" "#define OUT_DATE _T(/"" "%4d %2d %2d/")/n" "#endif/n", currentTime.wYear, currentTime.wMonth, currentTime.wDay ); fclose(fp); return 0; }

上面的程序用于生成一个out_data.h的头文件,这文件里记录了编译的时间。假设这个程序叫做out_data.exe,那么对了VS工程来说,在工程的配置属性->生成事件->生成前事件->命令行中加out_data.exe。那么每次生成工程的时间就更新out_data.h文件(也即out_data.h里保存的时间都是最新的)。

2。计算使用的天数(从编译时间到现在的天数)。如下代码,GetOutDay返回天数。如果宏TESTING_VERSION_ON打开,则说明是测试版,不然就是正式版。一般情况下,具体工程要改动一下宏OutDayTest的定义。

//返回使用了的天数 int GetOutDay() { SYSTEMTIME currentTime={0},prevTime={0}; GetSystemTime(&currentTime); wchar_t *bT = OUT_DATE; char buildTime[10]; WideCharToMultiByte(CP_ACP,0,bT,-1,buildTime,16,NULL,NULL); char *time=buildTime+6;time[2]='/0'; prevTime.wDay=atoi(time); time-=2;time[2]='/0'; prevTime.wMonth=atoi(time); time-=4;time[4]='/0'; prevTime.wYear=atoi(time); double a,b; SystemTimeToVariantTime(&prevTime,&a); SystemTimeToVariantTime(&currentTime,&b); return (int)(b-a+1); } //是否已经过了试用期 extern int GetOutDay(); #if TESTING_VERSION_ON #define OutDayTest() / {/ static int i = 0;/ i++;/ if ( GetOutDay() > TEST_DAY_COUNT && i > 50 )/ {/ ::MessageBox( hWnd, L"试用期已过,请使用正式版", L"", MB_OK | MB_ICONINFORMATION );/ i = 0;/ return FALSE;/ }/ } #else #define OutDayTest() 0 #endif

3。最后将GBOutDayTest();这个宏放在适当的地方。就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值