关于如何实现程序一天只启动一次的想法(C++实现)

  

问题描述: 我们在程序开发当中,经常会遇到某些子程序需要实现一天只启动一次的功能,该功能实现的方法有很多种,其原理都是通过记录标记为来实现的。本次要分享的也是利用程序标记为来实现的,而且只需要使用一个标记为:上次启动时间,并将这个标记为保存在注册表中!

实现原理:  1. 子程序第一次启动的时候,在注册表中创建一个新的键值,并且保存当前系统时间;  (此部分代码省略)

       2. 通过定时器去监测是否启动子程序,并对当前时间当天的最后时间(23:59:59)进行比较;如果当前时间小于当天最后时间,不执行;如果大于,执行子程序,并且将当前时间更新到注册表中;

       3. 时间比较是通过转换成long类型来实现的,因为将时间保存到注册表中是DWORD类型。

示例代码:

  

BOOL HasShowToday(UINT dueDays = 0)
{
    BOOL bRt = FALSE;
    time_t lastTime = (time_t)GetTimeFromReg();
    struct tm* pTm = localtime(&lastTime); // time_t -> tm
    pTm->tm_mday += dueDays;
    pTm->tm_hour = 23;
    pTm->tm_min = 59;
    pTm->tm_sec = 59;

    time_t dueTime = mktime(pTm); // tm -> time_t
DWORD dwCurTime
= GetCurTime(); if ( (DWORD)dueTime < dwCurTime ) { bRt = TRUE; SetTimeToReg(GetCurTime()); } return bRt; }
原文地址:https://www.cnblogs.com/nchxmoon/p/3196407.html