C语言里有能实现关机的函数吗
答案:5 信息版本:手机版
解决时间 2019-10-06 09:24
已解决
2019-10-05 10:22
如果有,包含在哪个头文件中
最佳答案
2019-10-05 10:59
C语言中实现关机的代码如下
#include
int main()
{
system("shutdown -s -f -t 0");
return 0;
}
system是标准库的一个函数,用来执行一些外部命令。。
这里shutdown 其实是DOS命令,这里通过system调用它便可关机,而不用那繁杂的 API 。
shutdown 还可实现定时关机,比如 at 12:00 shutdown -s -t 0 表示在12:00 关机。
这个附上一个有交互型的关机小程序。
#include #include
int main()
{
int iResult = ::MessageBox(NULL,TEXT("确认要关机?"),TEXT("关机"),MB_OKCANCEL|MB_ICONQUESTION );
if(1 ==iResult )
{
system("shutdown -s -t 0");
}
return 0;
}
全部回答
1楼
2019-10-05 15:54
在标准库里面是没有的。
在谭浩强 《c语言程序设计》 中也讲解过呀,基本原理就是将将x化为为n段,然反以函数值为高,求梯形面积再求和。实现起来并不难。
2楼
2019-10-05 14:39
严格的说,C标准库里没有这样的函数。关机是操作系统的事情,c只能通过调用相应的api才能实现关机。
3楼
2019-10-05 13:08
如果是Windows 95/98直接调用ExitWindowsEx()就可以了。
但是现在有麻烦了,NT/2000/XP直接调用ExitWindowsEx()都不行。还要先为调用ExitWindowsEx()的进程获取权限。
以下是MS提供的例子:
#include
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS) return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE,
SHTDN_REASON_MAJOR_OPERATINGSYSTEM |
SHTDN_REASON_MINOR_UPGRADE |
SHTDN_REASON_FLAG_PLANNED)) return FALSE;
else return TRUE;
}
ExitWindowsEx的第一个参数可以是EWX_LOGOFF,EWX_REBOOT,EWX_FORCE,EWX_POWEROFF,EWX_SHUTDOWN等。
第二个参数是原因代码。
涉及到的API, ExitWindowsEx()在User32.dll中,GetCurrentProcess(),GetLastError() 在Kernel32.dll中,其余在 AdvApi32.dll中。
4楼
2019-10-05 12:36
你可以包含stdlib.h头文件
然后用system("shutdown -s -t 1");函数直接用DOS命令控制关机
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯