问下C#中怎么在程序里设置让电脑自动关机或者重启

作者&投稿:柘弦 (若有异议请与网页底部的电邮联系)
在C#中如何让电脑自动关机~

打开Visual Studio.NET2003--文件---新建---左边选C#,右边选Window应用程序,给你的程序随便写个名--确定,这时系统已生成一个window应用程序的框架,只需把代码加进去就可以了。
本程序用到的控件只有三个按钮,分别为:重启,关机,退出。

打开右边的“解决方案资源管理器”--展开树结构--引用--添加引用---在弹出的对话框中找到System.Management---双击添加它---确定,即建成对System.Management.dll的引用。然后在程序的开头再写入
using System.Management;
using System.Runtime.InteropServices; //加入此名字间是为了引用Windows API来实现关机

程序如下:
-------------------
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Management;
using System.Runtime.InteropServices; //加入此名字间是为了引用Windows API来实现关机

namespace RebootComputer
{

public class Form1 : System.Windows.Forms.Form
{
//---------------这部分都是控件--------
private System.Windows.Forms.Button Reboot;
private System.Windows.Forms.Button ShutDown;
private System.ComponentModel.Container components = null;
private System.Windows.Forms.Button Exit;
//---------------------------------------------------------
private ManagementObjectSearcher obj ;//关于这个类,请看上次的简简单单获取系统资源信息(共享、硬盘、网卡等)http://itbbs.pconline.com.cn/traditional/article.jsp?topic=1540826
//-----------------程序初始化----------------

public Form1()
{
InitializeComponent();
}
//-----------------------程序释放----------------------
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

//-------------------------初始化----------------------
private void InitializeComponent()
{
this.Reboot = new System.Windows.Forms.Button();
this.ShutDown = new System.Windows.Forms.Button();
this.Exit = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// Reboot
//
this.Reboot.Location = new System.Drawing.Point(16, 16);
this.Reboot.Name = "Reboot";
this.Reboot.TabIndex = 0;
this.Reboot.Text = "重启";
this.Reboot.Click += new System.EventHandler(this.Reboot_Click);
//
// ShutDown
//
this.ShutDown.Location = new System.Drawing.Point(112, 16);
this.ShutDown.Name = "ShutDown";
this.ShutDown.TabIndex = 1;
this.ShutDown.Text = "关机";
this.ShutDown.Click += new System.EventHandler(this.ShutDown_Click);
//
// Exit
//
this.Exit.Location = new System.Drawing.Point(216, 16);
this.Exit.Name = "Exit";
this.Exit.TabIndex = 2;
this.Exit.Text = "退出";
this.Exit.Click += new System.EventHandler(this.Exit_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(304, 53);
this.Controls.Add(this.Exit);
this.Controls.Add(this.ShutDown);
this.Controls.Add(this.Reboot);
this.Name = "Form1";
this.Text = "重启、关机";
this.ResumeLayout(false);

}
//-----------------主函数,没有此函数可运行不了哦----------
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
//--------------------重启部分程序,主要还是利用上次的简简单单获取系统资源信息(共享、硬盘、网卡等)----------------
private void Reboot_Click(object sender, System.EventArgs e)
{

obj = new ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem");
foreach(ManagementObject oc in obj.Get())
{
DialogResult result = MessageBox.Show("Are you sure want to reboot?","Confirm",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);//这里为确定用户是否点击“确定”按钮
if(DialogResult.OK == result)
{
oc.InvokeMethod("Reboot",null);//点击“确定”按钮后就调用此方法重启机器
}

}
}
//---------------关机部分程序------------------------
private void ShutDown_Click(object sender, System.EventArgs e)
{

if(DialogResult.OK == MessageBox.Show("Are you sure want to Shut Down?","Confirm",MessageBoxButtons.OKCancel,MessageBoxIcon.Information)) //同上
{//主要调用系统API来实现
ExitWindowsEx(1,0);
}
}
//这里的[DllImport("user32.dll")]是.net里属性的表达方法,DllImport为引用系统API所在的库"user32.dll"

[DllImport("user32.dll")]
//主要API是这个,注意:必须声明为static extern
private static extern int ExitWindowsEx(int x,int y);

//这个是退出按钮的实现,即实现程序的退出
private void Exit_Click(object sender, System.EventArgs e)
{
Application.Exit();
}
}
}
---------------------

初学者不要看代码很长,其实很简单,关键的只有Reboot_Click和ShutDown_Click这两个方法,其它都是控件的布局之类的

电脑怎么设置自动关机呢?今天我们一起来看一下

C# 实现注销、关机、重启电脑功能
using System.Runtime.InteropServices;
[Flags]
public enum ExitWindows : uint
{
LogOff = 0x00, //注销
ShutDown = 0x01, //关机
Reboot = 0x02, //重启
Force = 0x04,
PowerOff = 0x08,
ForceIfHung = 0x10
}

[Flags]
public enum ShutdownReason : uint
{
MajorApplication = 0x00040000,
MajorHardware = 0x00010000,
MajorLegacyApi = 0x00070000,
MajorOperatingSystem = 0x00020000,
MajorOther = 0x00000000,
MajorPower = 0x00060000,
MajorSoftware = 0x00030000,
MajorSystem = 0x00050000,

MinorBlueScreen = 0x0000000F,
MinorCordUnplugged = 0x0000000b,
MinorDisk = 0x00000007,
MinorEnvironment = 0x0000000c,
MinorHardwareDriver = 0x0000000d,
MinorHotfix = 0x00000011,
MinorHung = 0x00000005,
MinorInstallation = 0x00000002,
MinorMaintenance = 0x00000001,
MinorMMC = 0x00000019,
MinorNetworkConnectivity = 0x00000014,
MinorNetworkCard = 0x00000009,
MinorOther = 0x00000000,
MinorOtherDriver = 0x0000000e,
MinorPowerSupply = 0x0000000a,
MinorProcessor = 0x00000008,
MinorReconfig = 0x00000004,
MinorSecurity = 0x00000013,
MinorSecurityFix = 0x00000012,
MinorSecurityFixUninstall = 0x00000018,
MinorServicePack = 0x00000010,
MinorServicePackUninstall = 0x00000016,
MinorTermSrv = 0x00000020,
MinorUnstable = 0x00000006,
MinorUpgrade = 0x00000003,
MinorWMI = 0x00000015,

FlagUserDefined = 0x40000000,
FlagPlanned = 0x80000000
}

[DllImport("user32.dll")]
static extern bool ExitWindowsEx(ExitWindows uFlags, ShutdownReason dwReason);

[STAThread]
static void Main(string[] args)
{
ExitWindowsEx(ExitWindows.LogOff, ShutdownReason.MajorOther & ShutdownReason.MinorOther);
//这个语句将实现计算机注销操作
}


两个在上面一个在下c猜一个字母是啥?
"两个在上面?一个在下c"是一个谜语,谜底是字母"C"。1.谜语的解释 "两个在上面?一个在下c"是一个谐音谜语,通过和谐音进行双关解释。两个在上面的是字母U,它由两条线组成,而一个在下的是字母C,它由一条弧线组成。因此,谜语的解答是字母"C"。2.谐音谜语的特点 谐音谜语是一种语言游戏...

上下c是什么品牌
安德玛。是美国的一个体育运动装备品牌。此牌子走的是专业路线,产品做工相对不错,价格比nike稍微高一点,算是体育装备中顶级牌子。紧身衣是其最着名产品。

请问Vista系统下C:\/Windows\/servicing\/Packages是什么文件夹?里面的...
是微软对驱动程序的数字签名驱动服务相关文件夹。微软对硬件厂商开发的驱动程序进行兼容性、稳定性测试。

c一下是什么意思
'C一下'是一种常用的网络用语,通常用于表示希望对方尽快完成某个动作或者提出要求。这个词语的起源不是很明确,但它的使用已经广泛流传于网络文化中。在日常使用中,C一下通常是用来表达一种紧急的情况或者有所期待的状态。例如,当你希望对方回复你的消息时,你可以说“能不能给我回复一下?”。同样...

想问一下胸围c是多大?
胸围c是指上下胸围差是15cm的胸围。根据下胸围的不同,一般有70C、75C、80C、85C等。罩杯的尺寸则由其深度决定。乳房最高点的乳围(三围之一)减去乳房下围一圈的长度 ,两种罩杯间的尺寸则以够长的背扣来解决。胸围c的尺寸意思就是上胸围和下胸围的差值在15以内,根据下胸围的尺寸不一样,可以分为...

Linux下C和C++程序中内存泄露检测
内存泄漏源于分配后未释放内存,valgrind能够记录分配次数与释放次数,帮助定位泄漏位置。错误匹配malloc\/new\/new[]与free\/delete\/delete[]时,valgrind会提示错误,避免资源泄露。重复释放同一块内存可能导致程序异常,valgrind能捕捉此类非法操作。总之,valgrind是解决Linux下C\/C++程序内存问题的利器,能有效...

女人什么情况下会被C
被C是一种性爱中的感受,因个体差异而有不同的体验。以下是对此的详细解释:一、被C的含义及感受 被C通常指的是在性爱过程中,女性感受到强烈的刺激和快感。这种刺激可能来自于对方的触摸、亲吻、或是其他性行为,使女性产生愉悦和兴奋的感觉。每个人的感受不同,有的女性可能会感受到强烈的满足感,...

帮我查一下维生素c
维生素C是呈无色无臭的片状晶体,易溶于水,不溶于有机溶剂。在酸性环境中稳定,遇空气中氧、热、光、碱性物质,特别是由氧化酶及痕量铜、铁等金属离子存在时,可促进其氧化破坏。氧化酶一般在蔬菜中含量较多,故蔬菜储存过程中都有不同程度流失。但在某些果实中含有的生物类黄酮,能保护其稳定性。

上下两个c是什么牌子
提到商标为两个c的品牌,很多朋友可能会想到香奈儿,实际上还有一个上下两个c的商标,这个品牌就是安德玛。接下来,就一起来了解一下安德玛吧。上下两个c是什么牌子 上下两个c是安德玛。它成立于一九九六年,属于美国的功能性运动产品。安德玛主要生产的的是在运动队服里的紧身内衣,此品牌设计风格相对比较...

linux下的c语言编程和windows下的c语言编程有什么区别
一个是Windows的 Win32 API。Linux下的接口因为源自UNIX,有很多API明显是C库的风格,风格比较老旧。但是Win32 API风格更现代、更高级一些。比如Linux下fork\/exec、Windows下 CreateProcess 。而且Windows的API提供很多 图形界面 的相关功能,比如支持窗口间操作。Linux下需要单独的 GUI库 比如GTK+等等。

灵台县17133476116: 在C#中如何让电脑自动关机 -
超金同达: 打开Visual Studio.NET2003--文件---新建---左边选C#,右边选Window应用程序,给你的程序随便写个名--确定,这时系统已生成一个window应用程序的框架,只需把代码加进去就可以了. 本程序用到的控件只有三个按钮,分别为:重启,关机...

灵台县17133476116: 请问C#中有什么方法,能让电脑自动关机?
超金同达: 调用ExitWindowsEx~查阅MSDN~ExitWindowsEx(EWX_SHUTDOWN | EWX_FORCE, 0); ExitWindowsEx(EWX_FORCE | EWX_SHUTDOWN, 0);

灵台县17133476116: 怎么让一个用C#写的程序,开机时自动运行? -
超金同达: /// <summary> /// 设置应用程序开机自动运行 /// </summary> /// <param name="fileName">应用程序的文件名</param> /// <param name="isAutoRun">是否自动运行,为false时,取消自动运行</param> /// <exception cref="System.Exception...

灵台县17133476116: 怎样让C#程序开机自动运行
超金同达:private void win32_setAutoRun() //设置开机自启动 { string str = Application.ExecutablePath; RegistryKey reg_Autorun_Key = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Run"); reg_Autorun_Key.SetValue("你的程序名字", '"' + str + '"'); } 构造器里调用win32_SetAutoRun方法 LS说的localmachine权限好像不够.

灵台县17133476116: C#中该怎样写才能让程序开机自动运行
超金同达: 1、写注册表,在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run写入你要运行的程序. 2、编写一个windows服务程序,然后注册它一下

灵台县17133476116: C#如何让电脑隔五分钟自动执行按键? -
超金同达: 你是要用C#写一个程序如果你要在自己的程序中使用的话.可以创建一个timer,然后在timer的事件中执行SendKey类的方法来执行按键操作.或者执行FindWindow 和 SetForegroundWindow 之后向找到的窗口发送按键? 还是用C#写一个程序帮你在开发时自动保存你的代码? 还是其他什么的?最好描述清楚一些.应该可行.还是不太清楚你要干什么,帮助你保存Word或者Excel什么的

灵台县17133476116: C#窗体程序怎样自动以管理员身份启动 -
超金同达: 在exe上右键属性 - 兼容性 - 勾选以管理员身份运行打开Vs2005或vs2008工程,看在Properties下是否有app.manifest这个文件;如没有,右击工程在菜单中选择“属性”选中"安全性",在界面中勾选"启用ClickOnce安全设置"后,在Properties下就有自动生成app.manifest文件. 打开app.manifest文件,将 <requestedExecutionLevellevel="asInvoker"uiAccess="false" />改为<requestedExecutionLevellevel="requireAdministrator"uiAccess="false" />

灵台县17133476116: c# 代码实现让程序开机启动一次 -
超金同达: 原理就是在注册表启动项里添加一项.路径: SOFTWARE\Microsoft\Windows\CurrentVersion\Run 或者直接:运行 ->regedit 找到这个路径添加一项. 开机自启开机自启public static bool SetAutoRun(string keyName,string filePath) {try{...

灵台县17133476116: C# 让程序自动运行 -
超金同达: 不行.总要安排一个东西启动.可以像1楼说的放到启动目录中,这样每次开机的时候启动.但不会存在即运行..

灵台县17133476116: 我现在有一个C#程序,想让它在开机的时候自动启动. 而不是用户登录进去的时候才启动 -
超金同达: 嗯,要在启动后,登陆用户前,启动程序,你可以在:Windows计划任务 中设置! 新建计划任务! 在任务中,有一个选项叫做“不管用户是否登录都要运行” 使用这个,应该可以达到你的效果!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网