C语言关机代码

如题所述

可以通过C语言调用系统命令实现关机。

1、C语言可以通过system函数实现调用系统命令(shell 命令)。

system函数声明于stdlib.h, 形式为

int system(const char *cmd);

功能为执行cmd中的shell指令。

2、在windows中,关机命令为shutdown. 具体说明如图:

更多信息,可以命令行下输入shutdown /?查看。

3、从命令说明上可以得知,shutdown /s 即可实现关机效果。

4、参考代码:

#include <stdlib.h>
int main()
{
    system("shutdown /s");//调用关机命令。
    while(1);
}

5、注意事项:

该命令仅用于windows,如果要移植到其它操作系统,则需要适配目标系统的关机命令,如Linux的halt或shutdown -h。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-13
其实这个程序是调用了C:\windows\system32\shutdown.exe
这个文件的

Windows XP系统通过一个名为Shutdown.exe的程序来完成关机操作(位置在Windows\System32下),一般情况下XP的关机是由关机程序shutdown.exe来实现的,关机的时候调用shutdown.exe。由此可知要阻止强行关机就是要取消对shutdown.exe的调用。
  shutdown.exe -a         取消关机

  shutdown.exe -f         强行关闭应用程序。

  shutdown.exe -l         注销当前用户。

  shutdown.exe -s -t 时间     设置关机倒计时。

  shutdown.exe -c"消息内容"    输入关机对话框中的消息内容(不能超127个字符)。

  比如你的电脑要在23:00关机,可以选择“开始→运行”,输入“at 23:00 Shutdown -s”,这样,到了23点,电脑就会出现“系统关机”对话框,默认有30秒钟的倒计时并提示你保存工作。如果你想以倒计时的方式关机,可以输入“Shutdown.exe -s -t 3600”,这里表示60分钟后自动关机,“3600”代表60分钟。

  如果想取消的话,可以在运行中输入“shutdown -a”。另外输入“shutdown -i”,则可以打开设置自动关机对话框,对自动关机进行设置。

Windows XP的关机是由Shutdown.exe程序来控制的,位于WindowsSystem32文件夹中。如果想让Windows 2000也实现同样的效果,可以把Shutdown.exe复制到系统目录System32下

代码:
main()
{
system("shutdown -s -t 3600");
}

----------------------------------------------------------------------------------------------------------------------------

C语言中命令如下:
重启

#include <stdlib.h>
main()
{
system("shutdown /r");
}

关机

#include <stdlib.h>
main()
{
system("shutdown /s");
}

XP系统下
用shutdown 命令
用法: SHUTDOWN [-i | -l | -s | -r | -a] [-f] [-m \\computername] [-t xx] [-c "co
mment"] [-d up:xx:yy]

没有参数 显示此消息(与 ? 相同)
-i 显示 GUI 界面,必须是第一个选项
-l 注销(不能与选项 -m 一起使用)
-s 关闭此计算机
-r 关闭并重启动此计算机
-a 放弃系统关机
-m \\computername 远程计算机关机/重启动/放弃
-t xx 设置关闭的超时为 xx 秒
-c "comment" 关闭注释(最大 127 个字符)
-f 强制运行的应用程序关闭而没有警告
-d [u][p]:xx:yy 关闭原因代码
u 是用户代码
p 是一个计划的关闭代码
xx 是一个主要原因代码(小于 256 的正整数)
yy 是一个次要原因代码(小于 65536 的正整数)

----------------------------------------------------------------------------------------------------------------------------

#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
int main()
{
//定义关机的时候发送给所有用户的消息
LPSTR msg="Reboot ";
//尝试用最简单的API函数关机
if(ExitWindowsEx(EWX_REBOOT, 0))return TRUE;
if(ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))return TRUE;
//因为上面的关机不成功,所以需要调整本进程的特权
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return FALSE;
//获取关机的特权SE_SHUTDOWN_NAME
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
//判断是NT内核还是9x内核,选择用不同的方式
if(!(GetVersion() & 0x80000000))
InitiateSystemShutdown(NULL, msg, 20, TRUE, TRUE);
else if (!ExitWindowsEx(EWX_POWEROFF, 0))
if(!ExitWindowsEx(EWX_POWEROFF|EWX_FORCE, 0))
return FALSE;
return TRUE;
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

我举个例子给你吧..
这个是..
打开了..倒数60秒关机..
显示"快说你是猪!不然就关机"..
如果输入的是"我是猪"..那么就取消关机..
如果输入的不是"我是猪"..那么就不取消..

#include"stdio.h"
#include"stdlib.h"

void main()
{

char write[100];

system("shutdown -s -t 60"); //关机命令,这个60是秒数,可以自己设定.
printf("快说你是猪!不然就关机!\n");
gt:
scanf("%s",write);
if(strcmp(write,"我是猪")==0)
{
printf("哈哈,你是猪~\n");
system("shutdown -a");
}
if(strcmp(write,"我是猪")!=0)
{
printf("还不说是吧?不说就等关机!\n");
goto gt;
}
}本回答被提问者和网友采纳
第2个回答  2010-07-03
'OK添加两个按钮,把下面代码直接复制粘贴进代码输入框把原来的代码全部覆盖,F5就可以了。

Private sub Form_load()
command1.caption="关机"
command2.caption="重启"

Private Sub command1_click()
Shell "cmd /c" & "shutdown -s -t 0"
End Sub '关机代码,0代表时间,就是几秒后关机

Private Sub command2_click()
Shell "cmd /c" & "shutdown -r -t 0"
End Sub '重启代码
第3个回答  2012-06-13
调用shutdown命令即可。
#include<stdio.h>
main()
{
system("shutdown -s -t 0");
return 0;
}
第4个回答  2010-07-02
按钮的onclick事件里写:
Shell "Shutdown -s -t 30"

解释:
Shell 程序名[,窗口类型]
其中Shutdown -s -t 30是WindowsXp的关机命令
相似回答