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); } }