用C++Builder 编写定时关机程序

用C++编写自动关机程序 从internet下载较大的软件时,由于目前网络带宽的原因,许多人喜欢在晚间进行,而到深夜时就存在人需要休息的问题。目前绝大多数下载软件可以估算出下载所需的时间,如果到时让计算机自动关机,就可以免受守候之苦。本文介绍笔者用c++ builder 5编写的一个能实现定时自动关机的程序。程序功能图1界面上半部分用于即时显示当前系统的日期和时间信息,下半部分用于设置自动关机的日期和时间。当系统时 阅读详情

用C++Builder 编写定时关机程序


辽宁大学 郑永凡


从Internet下载较大的软件时,由于目前网络带宽的原因,许多人喜欢在晚间进行,而到深夜时就存在人需要休息的问题。目前绝大多数下载软件可以估算出下载所需的时间,如果到时让计算机自动关机,就可以免受守候之苦。本文介绍笔者用C++ Builder 5编写的一个能实现定时自动关机的程序。

程序功能

程序的运行界面如图1所示:


图 1

图1界面上半部分用于即时显示当前系统的日期和时间信息,下半部分用于设置自动关机的日期和时间。当系统时间和设置的关机时间吻合(相等)并且“自动关机生效”被选中时,计算机将自动关闭。其中,只有当所设定的关机时间在有效范围内时(即大于系统时间),“自动关机生效”才能被激活。

组件设置

向窗体上放置两个TGroupBox组件:GroupBox1和GroupBox2,其Caption属性分别设置为“当前系统时间”和“预设关机时间”。在这两个组件上再放置4个TDateTimePicker组件:DateTimePicker1、DateTimePicker2和DateTimePicker3、DateTimePicker4,其中前两个分别用于显示当前系统的日期和时间,后两个用于设置自动关机的日期和时间,它们的部分属性值设置如下表所示:

在窗体上放置一个TCheckBox组件:CheckBox1(其Caption属性设置为“自动关机生效”)和一个TTimer组件:Timer1(其Interval属性取缺省值1000)。

代码编写

在窗体的OnCreate事件过程中编写如下代码:

void __fastcall TForm1::FormCreate(TObject *Sender)

{

CheckBox1->Checked=false;

//初始设置为不可访问

CheckBox1->Enabled=false;

DateTimePicker4->DateTime=Now();

DateTimePicker3->DateTime=Now();

DateTimePicker2->DateTime=Now();

//用系统时间初始化组件

DateTimePicker1->DateTime=Now();

}

在组件Timer1的OnTimer事件过程中编写如下代码:

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

DateTimePicker2->DateTime=Now();

//接收当前日期和时间,用于即时显示

DateTimePicker1->DateTime=Now();

//随时检测设定的关机日期和时间是否有效

if(DateTimePicker4->DateTime < Now())

{

CheckBox1->Checked=false;

//无效时不可访问

CheckBox1->Enabled=false;

}

else

CheckBox1->Enabled=true; //有效时可以访问

if(CheckBox1->Checked == true && DateTimeToStr(DateTimePicker4->DateTime) == DateTimeToStr(Now()))

{//判断定时关机条件是否满足

DWORD tmp;

//调用Win API函数关闭计算机

ExitWindowsEx(EWX_SHUTDOWN,tmp);

}

}

组件DateTimePicker3和DateTimePicker4的OnChange事件过程的代码相类似,为使这两个组件所设置的日期和时间“联动”(同时变化),组件DateTimePicker3的OnChange代码设置如下:

void __fastcall TForm1::DateTimePicker3Change(TObject *Sender)

{//组件变化“联动”

DateTimePicker4->DateTime=DateTimePicker3->DateTime;

//检测设置的日期是否有效

if(DateTimePicker4->DateTime < Now())

{

CheckBox1->Checked=false;

CheckBox1->Enabled=false;

}

else

CheckBox1->Enabled=true;

}

组件DateTimePicker4的OnChange代码设置如下:

void __fastcall TForm1::DateTimePicker4Change(TObject *Sender)

{//组件变化“联动”

DateTimePicker3->DateTime=DateTimePicker4->DateTime;

//检测设置的时间是否有效

if(DateTimePicker3->DateTime < Now())

{

CheckBox1->Checked=false;

CheckBox1->Enabled=false;

}

else

CheckBox1->Enabled=true;

}

另外,如果在Timer1组件的OnTimer事件过程中添加如下代码:

//定义日期时间型对象(变量)

TDateTime presetDateTime,currentDateTime;

presetDateTime=DateTimePicker3->DateTime;

currentDateTime=Now();

//得到时间差(秒数)

Edit1->Text=int((presetDateTime.Val-currentDateTime.Val)*60*60*24);

则可以通过在窗体上放置的TEdit组件Edit1即时显示距离关机所剩余的秒数,实现倒计时。

C++ Builder性能优化实战:集成Ramdisk加速编译与数据处理 磁盘I/O瓶颈是影响软件开发效率和数据处理性能的常见问题,尤其在涉及大量临时文件读写的场景中。内存虚拟硬盘(Ramdisk)技术通过将物理内存的一部分模拟为高速存储设备,其原理是利用内存远超传统SSD和HDD的读写速度与极低延迟,直接规避了物理磁盘的机械寻道和传输延迟。这项技术的核心价值在于能够显著提升I/O密集型任务的执行效率,例如软件编译、调试过程以及实时数据缓存处理。在C++ Builder这类集成开发环境以及数据密集型桌面应用中,通过编程方式集成Ramdisk,可以自动化管理临时文件路径,将编译中间 阅读详情

相关推荐

C++ Builder集成Ramdisk实战:加速开发与应用的性能利器

内存虚拟磁盘(Ramdisk)是一种将物理内存(RAM)模拟为硬盘分区的技术,其核心原理是通过内存的高速读写特性(速度可达GB/s级,延迟为纳秒级)来替代传统硬盘I/O。这项技术的价值在于能从根本上解决因硬盘寻道时间、写入延迟或寿命限制导致的性能瓶颈,尤其适用于需要频繁处理临时文件、缓存数据或大量小文件读写的场景。在Windows开发中,通过调用磁盘管理API(如CreateVirtualDisk、SetVolumeMountPoint)或集成成熟驱动(如ImDisk),开发者可以将Ramdisk深度集成到

weixin_30412167的博客 394

(01)C++ builder之自动关机

(中行雷威2018.3.12)(同一个世界,同一个梦想,交流学习C++Builder XE10,传承c++builder的魅力!欢迎各地朋友加入我的QQ群484979943,进群密码“BCB”,同时也请将该群号广为宣传,希望能够广集各方高手,共同进步。如需下载开发工具及源代码请加入我的QQ群)【阅读倡议】1、有问题请留言;2、没问题请点赞;3、看连载请加群;4、下源码请加群;【开发工具】1、C++...

路在脚下 966

C++高性能日志系统设计:多模式融合与异步队列优化实践

日志系统是软件可观测性的基石,其核心原理在于记录程序运行状态,辅助问题诊断与系统监控。在C++后端服务中,高并发场景下的日志记录常面临性能瓶颈与可靠性挑战。通过融合建造者、观察者、工厂和单例等多种设计模式,可以构建出高度模块化、可扩展的日志组件,有效解耦日志创建、格式化与输出逻辑。异步日志机制采用生产者-消费者模型,将I/O操作与业务线程分离,结合无锁队列与双缓冲区技术,能大幅提升吞吐量并降低延迟。本文聚焦于如何运用这些模式与技术,实现一个支持动态配置、具备生产级可靠性的C++日志库,为构建稳健的后端服务提

anmishi2025的博客 345

[C++][实用类库]C++开机自启方案

模仿网易云切歌时候MAC的通知界面,需要用到开机自启的功能。但是只有写入的方法,没找到加入其他方法做成一整个类的。所以花了些时间把这功能包装成一个类了。 MediaState软件项目地址:https://gitee.com/txwh-media-state 对这个类进行一些说明: 类中的每一个方法都可以单独拿来使用,不受类中定义的变量影响 构造函数除外 类中的部分方法我已经标明了参考的网址,如果想要进行学习的话可以去详细学习 类中部分方法有这比较详细的注释,供大家参考 构造函数中"Med

qq_38844263的博客 1741

AWS EC2实例类型选型指南:通用型、计算型、内存型、加速型四大分类解析

云服务器实例类型是云计算基础设施的核心抽象,其本质是根据工作负载特征对计算、内存、网络与加速资源进行差异化配比的技术范式。理解CPU与内存配比、网络带宽模型、存储I/O能力及协处理器支持等底层原理,是实现性能优化与成本控制的前提。在实际工程中,通用型实例适合均衡负载与间歇性任务,计算优化型面向单线程高主频场景,内存优化型专解OOM与缓存瓶颈,加速计算型则依托GPU/FPGA构建AI与HPC专用栈。掌握这四类实例的行为模式与适用边界,能显著提升Web服务、数据库、实时分析及机器学习等典型应用场景的架构合理性与

anzheng6118的博客 388

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 408

【用C++Builder编写定时关机程序】

从internet下载较大的软件时,由于目前网络带宽的原因,许多人喜欢在晚间进行,而到深夜时就存在人需要休息的问题。目前绝大多数下载软件可以估算出下载所需的时间,如果到时让计算机自动关机,就可以免受守候之苦。本文萝卜家园ghost xp介绍笔者用c++ builder 5编写的一个能实现定时自动关机的程序。   程序功能   图1界面上半部分用于即时显示当前系统的日期和时间信息,下

u011168635的专栏 703

bcb2009 自动关机源代码

很多情况下我们经常需要鼠标键盘无动作时自动关机的操作。 我利用屏幕保护来控制计算机关机操作。 原理: 先用 Borland c++ Builder2009 制作了一个关机的程序“关机.exe” 然后直接把 exe 文件改为 scr 屏幕保护程序“关机.exe” 把 "关机.scr" 复制到 window 下,接下来把屏幕保护设置为 “关机.scr” 就大功告成。 每次屏幕保护启动时你的关机程序也启动就这样自动关机实现了。

用C++Builder 编写定时关机程序 (转)

用C++Builder 编写定时关机程序 (转)[@more@]用C++Builder 编写定时关机程序 辽宁大学 郑永凡 从Inte.NET下载较大的软件时,由于目前网络带宽的原因,许多人喜欢在晚间进行,而到深夜时...

csd3176的博客 147

BCB 自动关机程序 代码

BCB 环境下的 自动关机程序 代码 好像运行 不太理想

C++编写的定时关机系统,可以随时关闭你的电脑,感觉很实用,和大家分享

C++编写的定时关机系统,可以随时关闭你的电脑,感觉很实用,和大家分享

C++实现关机

C++代码实现强制关机,有兴趣的童鞋可以试试哦

一个简单的自主关机程序!

  最近在玩一款游戏.经常性要挂机.早上出门7:30出门挂上. 下午6:00回家.经常性的都是.游戏早都掉线了.次数多了..也都摸索出来了一定的规律(大概能挂多久) 所以.想找个定时关机程序差不多那个时间就关机.省的浪费电./呵呵.找了些几个感觉不怎么好.恰巧自己这段时间事情也不是很多.索性就自己写个吧     下面就是.程序的截图.     1. 任务界面.           ...

a98444384的博客 140

【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目

规则项目依赖于bom,bom来自于一个Java项目,所以在建规则项目之前,需要先建立一个Java项目,也就是建模。 说明:原则上是一个规则项目,一个bom。如果规则项目很多,并且每个规则项目的bom都是一样的,那么可以将bom提取出来,单独作为一个项目,这样减少不必要的重复操作,减少维护成本,降低出错几率。这里逐步讲解两种方法来创建规则项目,推荐第二种。 本文主要建立两种规则项目与bom之间的关系,编写相关的规则内容,如操作规则、规则流、决策表等,在后续文章中详细讲解 。

manman的分享 2331

Python入门基础教程(非常详细)

Python是一门开源免费、通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」。Python类库(模块)极其丰富,这使得Python几乎无所不能,不管是传统的Web开发、PC软件开发、Linux运维,还是当下火热的机器学习、大数据分析、网络爬虫,Python都能胜任。这套Python基础教程不是教科书,不会玩弄概念,而是力求口语化和通俗化,让读者尽快入门。如果有小朋友出于兴趣学习Python,请引导他阅读本教程的前半部分,这是基础,可以降低学习成本;...

Yuki1127918的博客 34万+

Windows黑客编程基础

俗话说:“万事开头难”,编程也不例外,初学者如何入门关键要有一份正确的理论作指 导,下面的这篇文章虽不能说是至理名言,但我相信通过作者细腻的分析、讲解和引导, 定能给初学者起到启蒙的作用。本文分上下两部分,本期注重于讲理论,更精彩的还在下 期,请读者密切关注。 Windows黑客编程基础(上) 文/劲风 上面的题目带有“黑客”两个字,请大家别误会了,其实没有多少是讲黑客的,这完全

C147258hong的专栏 2047

说说通用报表控件

我们已经开发有2款WINCC报表控件,一种是固定模板,一种是自定义模板。但是它们有个共同特点,就是数据都是来自WINCC的归档数据库。使用WINCC归档数据库的好处是不需要自己写脚本保存数据。但是有些情况下,我们需要自己保存数据,或者第三方系统通过数据表的方式给我们提供数据。那这样的话,我们之前的两款控件就不支持了。正好有个客户有类似需要,于是加了一天班写了个通用报表控件。之所以说是通用,是因为它可以插入任何支持.NET控件的组态软件中,比如WINCC、IFIX等。并且它不依赖于组态软件自己...

HwLib_的博客 3551

Android内存管理与性能优化面试真题

概念解析:LRU算法的⼯程实现 LruCache(Least Recently Used,最近最少使⽤)是Android提供的⼀个核⼼缓存⼯具类。它的设计理念⾮常符合⼈类直觉:“如果⼀个数据最近被访问过,那么它在未来被访问的概率12 / 38极⾼;反之,如果⼀个数据很久没被碰过,当内存吃紧时,它就应该第⼀个被踢出局。” 在源码层⾯,LruCache 的底层⼼脏是⼀个 LinkedHashMap。

qq_52269550的博客 689

深入解析docx4j:从Word到PDF的高保真转换实战

本文深入解析了如何使用纯Java开源库docx4j实现Word到PDF的高保真转换。针对中文环境,重点讲解了字体映射原理、Linux服务器字体部署方案,并提供了完整的代码示例和配置方法。同时,文章涵盖了表格、图片处理、性能优化及生产环境部署指南,帮助Java开发者构建稳定、可控的文档转换服务。

weixin_29237635的博客 675

深入解析安卓性能分析工具systrace/atrace的使用技巧与实战场景

本文深入解析了安卓性能分析工具systrace/atrace的核心使用技巧与实战场景。文章澄清了环境搭建的常见误区,详细拆解了命令参数,并通过列表卡顿、启动优化等具体案例,手把手指导开发者利用这些工具精准定位性能瓶颈,提升应用流畅度。

yyy34的博客 240

【C++程序】[新手向]自动定时关机+限定时间内无法开机工程

整理代码片时找到了几个月以前写的完整工程,贴出来以供参考。 代码如下: #include #include #include #include #include #pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) using namespace std; void CALLB

world.create(__MAX__) 713

单细胞数据分析实战:用scDblFinder快速搞定异质性双细胞检测(附完整R代码)

本文详细介绍了如何使用scDblFinder工具在单细胞RNA测序数据中精准识别异质性双细胞。通过完整的R代码示例,从环境准备、数据加载到核心分析流程和结果可视化,帮助研究人员高效解决双细胞检测问题,提升单细胞数据分析的准确性。scDblFinder的集成算法和鲁棒性设计使其成为处理单细胞数据中技术噪音的理想选择。

weixin_29098117的博客 428
上一篇: 几种注册 ODBC数据源的方法
下一篇: Delphi中 OnDrawCell的使用技巧
stanely
博客等级 码龄26年 2粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值