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; }
  • 相关阅读:
    CF750D New Year and Fireworks
    raw,qcow2虚拟磁盘挂载
    虚拟机嵌套kvm/vmware
    CentOS Linux 7硬盘安装
    文本界面听歌神器--moc
    Ubuntu14.04升级内核3.14.25
    (转)MySQL初识-架构-安装-初始化-连接-管理工具-数据文件
    Ubuntu14.04使用国内163源或sohu源
    虚拟磁盘格式转换(raw,qcow2,vmdk等)--qemu-img
    phpMyAdmin4.2.12安装配置
  • 原文地址:https://www.cnblogs.com/nchxmoon/p/3196407.html
Copyright © 2011-2022 走看看