macleo's blog

孤独 和 赛跑

导航

利用C#实现开机、关机和重起

转载自:http://hi.baidu.com/tianine5/blog/item/a16ab0186de1f90634fa417e.html

本程序用到的控件只有三个按钮,分别为:重启,关机,退出。

  打开右边的“解决方案资源管理器”--展开树结构--引用--添加引用---在弹出的对话框中找到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();
           }
       }
}

posted on 2007-04-05 17:26  macleo  阅读(723)  评论(0)    收藏  举报