
2个回答
展开全部
这样,先要两个tgroupbox组件:groupbox1和groupbox2,其caption属性分别设置为“当前系统时间”和“预设关机时间”。在这两个组件上再放置4个tdatetimepicker组件:datetimepicker1、datetimepicker2和datetimepicker3、datetimepicker4,其中前两个分别用于显示当前系统的日期和时间,后两个用于设置自动关机的日期和时间,tcheckbox组件:checkbox1(其caption属性设置为“自动关机生效”)和一个ttimer组件:timer1(其interval属性取缺省值1000)。
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;
}
嗯这个是原理:上面的半部分用于即时显示当前系统的日期和时间信息,下面的半部分用于设置自动关机的日期和时间。当系统时间和设置的关机时间吻合(相等)并且“自动关机生效”被选中时,计算机将自动关闭。其中,只有当所设定的关机时间在有效范围内时(即大于系统时间),“自动关机生效”才能被激活。就是一个倒计时关机程序。这样计算机就关掉niao。不过系统指令调用简单你为啥不用。直接因酷路的往下写。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[50];
int b;
cout<<"请输入关机时间:(秒)"<<endl;
cin>>b;
sprintf(a,"shutdown -s -f -t %d",b);
system(a);
return 0;
}
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;
}
嗯这个是原理:上面的半部分用于即时显示当前系统的日期和时间信息,下面的半部分用于设置自动关机的日期和时间。当系统时间和设置的关机时间吻合(相等)并且“自动关机生效”被选中时,计算机将自动关闭。其中,只有当所设定的关机时间在有效范围内时(即大于系统时间),“自动关机生效”才能被激活。就是一个倒计时关机程序。这样计算机就关掉niao。不过系统指令调用简单你为啥不用。直接因酷路的往下写。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[50];
int b;
cout<<"请输入关机时间:(秒)"<<endl;
cin>>b;
sprintf(a,"shutdown -s -f -t %d",b);
system(a);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询