www.pudn.com > sharewareluncher.zip > date.c


#include  
#include "sharewareluncher.h" 
#include "resource.h" 
 
extern APPINFO aiAppInfo[50]; 
SYSTEMTIME stVr,stReal; 
BOOL bSysTimeChanged=FALSE; 
BOOL bClockYes=TRUE; 
 
BOOL Lunch(HWND hWnd,int i) 
{ 
   char szDir[256]; 
   SETUPINFO siInfo; 
 
	if(aiAppInfo[i].stVrDate.wYear!=0 && aiAppInfo[i].stVrDate.wMonth!=0 && 
   	aiAppInfo[i].stVrDate.wDay!=0) 
   { 
   	GetLocalTime(&stReal); 
      if(!bSysTimeChanged) 
       	GetLocalTime(&stVr); 
      else 
      	KillTimer(hWnd,0); 
 
      stVr.wYear=aiAppInfo[i].stVrDate.wYear; 
      stVr.wMonth=aiAppInfo[i].stVrDate.wMonth; 
      stVr.wDay=aiAppInfo[i].stVrDate.wDay; 
 
      bClockYes=FALSE; 
      SetLocalTime(&stVr); 
      SetTimer(hWnd,0,20000,NULL); 
      bSysTimeChanged=TRUE; 
   } 
   GetPathFromFileName1(aiAppInfo[i].szAppCmd,szDir); 
   siInfo=RunSetup(aiAppInfo[i].szAppCmd,szDir,NULL); 
   return siInfo.flag; 
} 
 
BOOL GetPathFromFileName1(LPSTR szFileName,LPSTR szDir) 
{ 
	int i,nCount=0; 
   char szTemp[256]=" "; 
 
   for(i=0;i<(int)strlen(szFileName);i++) 
   { 
   	if(szFileName[i]=='\\') 
      	nCount++; 
   } 
   if(nCount==0) 
   	return FALSE; 
   for(i=0;i<(int)strlen(szFileName);i++) 
   { 
      szTemp[i]=szFileName[i]; 
   	if(szFileName[i]=='\\') 
      { 
      	nCount--; 
         if(nCount==0) 
         { 
         	szTemp[i]='\0'; 
            wsprintf(szDir,szTemp); 
            return TRUE; 
         } 
      } 
   } 
   return FALSE; 
}   
 
void DoTimer(HWND hWnd,UINT i) 
{ 
	KillTimer(hWnd,i); 
 
   if(IsOneDayPassed1(&stVr,FALSE)) 
   	DoOneDayPassed1(&stReal,FALSE); 
 
   GetLocalTime(&stVr); 
 
   stVr.wYear=stReal.wYear; 
   stVr.wMonth=stReal.wMonth; 
   stVr.wDay=stReal.wDay; 
 
   SetLocalTime(&stVr); 
   bSysTimeChanged=FALSE; 
   bClockYes=TRUE; 
} 
 
BOOL IsOneDayPassed1(SYSTEMTIME *stTime,BOOL bChange) 
{ 
   SYSTEMTIME stTemp; 
   BOOL BigYear,BigMonth; 
 
   GetLocalTime(&stTemp); 
 
   if((stTemp.wYear-stTime->wYear==1) && stTemp.wMonth==1 && stTemp.wDay==1 && 
   	stTime->wMonth==12 && stTime->wDay==31) 
	{ 
   	if(bChange) 
      	*stTime=stTemp; 
      //Errmsg("y,12,31"); 
   	return TRUE; 
   } 
 
   if(stTime->wYear%4==0 && stTime->wYear%100!=0 || stTime->wYear%400==0) 
   BigYear=TRUE; 
   else 
   BigYear=FALSE; 
   if((stTime->wMonth<=7 && stTime->wMonth%2!=0) || (stTime->wMonth>=8 && stTime->wMonth%2==0)) 
   BigMonth=TRUE; 
   else 
   BigMonth=FALSE; 
 
   GetLocalTime(&stTemp); 
   if((stTemp.wYear==stTime->wYear) && (stTemp.wMonth-stTime->wMonth==1) && stTemp.wDay==1 && 
   	(stTime->wDay==BigMonth?31:(stTime->wMonth!=2?30:(BigYear?29:28)))) 
   { 
   	if(bChange) 
      	*stTime=stTemp; 
      return TRUE; 
   } 
 
   GetLocalTime(&stTemp); 
   if(stTemp.wYear==stTime->wYear && stTemp.wMonth==stTime->wMonth && stTemp.wDay-stTime->wDay==1) 
   { 
   	if(bChange) 
      	*stTime=stTemp; 
      //Errmsg("0,0,d"); 
   	return TRUE; 
   } 
 
   //GetLocalTime(&stTemp); 
   //if(stTemp.wYear==szTime->wYear && stTemp.wMonth==stTime->wMonth && stTemp.wDay==stTime->wDay) 
   //	return FALSE; 
 
   return FALSE; 
} 
 
void DoOneDayPassed1(SYSTEMTIME *stTime,BOOL bChange) 
{ 
   SYSTEMTIME stTemp; 
	BOOL BigYear,BigMonth; 
 
   if(stTime->wYear%4==0 && stTime->wYear%100!=0 || stTime->wYear%400==0) 
   BigYear=TRUE; 
   else 
   BigYear=FALSE; 
   if((stTime->wMonth<=7 && stTime->wMonth%2!=0) || (stTime->wMonth>=8 && stTime->wMonth%2==0)) 
   BigMonth=TRUE; 
   else 
   BigMonth=FALSE; 
 
   if(stTime->wDay==31 || (stTime->wDay==30 && !BigMonth && stTime->wMonth!=2) || 
   	(((stTime->wDay==28 && !BigYear) || (stTime->wDay==29 && BigYear)) && stTime->wMonth==2)) 
   { 
   	if(stTime->wMonth!=12) 
      { 
      	stTime->wMonth++; 
         stTime->wDay=1; 
      } 
      else 
      { 
      	stTime->wYear++; 
         stTime->wMonth=stTime->wDay=1; 
      } 
   } 
   else 
   	stTime->wDay++; 
 
   if(bChange) 
   { 
		GetLocalTime(&stTemp); 
	   stTemp.wYear=stTime->wYear; 
   	stTemp.wMonth=stTime->wMonth; 
	   stTemp.wDay=stTime->wDay; 
      SetLocalTime(&stTemp); 
   } 
}