zoukankan      html  css  js  c++  java
  • 关于如何实现程序一天只启动一次的想法(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; }
  • 相关阅读:
    文件操作:Directory,File,FielStream、StreamRead和StreamWriter的使用
    MVC中Excel导入
    T对象序列化后T对象中属性字段不见了?
    Sql游标
    Form表单提交
    AJAX异步删除操作
    数据库表结构导出sql语句
    多线程的使用
    找不到dll原因
    代码优化
  • 原文地址:https://www.cnblogs.com/nchxmoon/p/3196407.html
Copyright © 2011-2022 走看看