最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)關(guān)機(jī)重啟及注銷(xiāo)實(shí)例代碼

 更新時(shí)間:2014年07月25日 16:52:31   投稿:shichen2014  
這篇文章主要介紹了C#實(shí)現(xiàn)關(guān)機(jī)重啟及注銷(xiāo)實(shí)例代碼,適合新手參考學(xué)習(xí)之用,需要的朋友可以參考下

本文所述的C#實(shí)例代碼是一個(gè)基于Visual C#2010編寫(xiě)的關(guān)機(jī)、重啟、注銷(xiāo)程序,類(lèi)似的C#程序網(wǎng)上還有不少,每個(gè)人的寫(xiě)法都各有不同,這段程序供新手參考下。本代碼中還用到了一個(gè)計(jì)時(shí)器,用來(lái)顯示系統(tǒng)運(yùn)行的時(shí)間,以下為完整實(shí)例代碼:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Threading;
namespace shutdowncodes
{
 public class Form1 : System.Windows.Forms.Form
 {
 private System.Windows.Forms.GroupBox groupBox1;
 private System.Windows.Forms.TextBox textBox1;
 private System.Windows.Forms.Button button1;
 private System.Windows.Forms.Button button2;
 private System.Windows.Forms.Button button3;
 private System.ComponentModel.IContainer components;
 [StructLayout(LayoutKind.Sequential, Pack=1)]
 public struct TokPriv1Luid
 {
  public int Count;
  public long Luid;
  public int Attr;
 }
 [DllImport("kernel32.dll", ExactSpelling=true)]
  // GetCurrentProcess函數(shù)返回當(dāng)前進(jìn)程的一個(gè)句柄
 public static extern IntPtr GetCurrentProcess();
 [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
  // OpenProcessToken函數(shù)打開(kāi)一個(gè)進(jìn)程的訪(fǎng)問(wèn)代號(hào)
 public static extern bool OpenProcessToken(IntPtr ProcessHandles, int DesiredAccess, ref IntPtr TokenHandle);
 [DllImport("advapi32.dll", SetLastError=true)]
  // LookupPrivilegeValue函數(shù)獲得本地唯一的標(biāo)示符(LUID),用于在特定的系統(tǒng)中
  // 表示特定的優(yōu)先權(quán)。
 public static extern bool LookupPrivilegeValue(string lpSystemName, string lpName, ref long lpLuid);
 // AdjustTokenPrivileges函數(shù)允許或者禁用指定訪(fǎng)問(wèn)記號(hào)的優(yōu)先權(quán)。
 // 允許或者禁用優(yōu)先權(quán)需要TOKEN_ADJUST_PRIVILEGES訪(fǎng)問(wèn)權(quán)限。
 [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true)]
 public static extern bool AdjustTokenPrivileges(IntPtr TokenHandle, bool DisableAllPrivileges, ref TokPriv1Luid NewState, int BufferLength, IntPtr PreviousState,IntPtr ReturnLength);
 // ExitWindowsEx函數(shù)可以注銷(xiāo),關(guān)機(jī)或者重新啟動(dòng)系統(tǒng)
 [DllImport("user32.dll", ExactSpelling=true, SetLastError=true)]
 public static extern bool ExitWindowsEx(int flg, int rea);
 private System.Threading.Timer timer;
 private const int SE_PRIVILEGE_ENABLED = 0x00000002;
 private const int TOKEN_QUERY = 0x00000008;
 private const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;
 private const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";
 private const int EWX_LOGOFF = 0x00000000;   // 注銷(xiāo)
 private const int EWX_SHUTDOWN = 0x00000001;  // 關(guān)機(jī)
 private const int EWX_REBOOT = 0x00000002;   // 重啟
 private const int EWX_FORCE = 0x00000004;
 private static void RebootCommand(int flg)
 {
  bool ok;
  TokPriv1Luid tp;
  IntPtr hproc = GetCurrentProcess(); // 得到當(dāng)前的進(jìn)程
  IntPtr htok = IntPtr.Zero;
  ok = OpenProcessToken(hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok);
  tp.Count = 1;
  tp.Luid = 0;
  tp.Attr = SE_PRIVILEGE_ENABLED;
  ok = LookupPrivilegeValue(null, SE_SHUTDOWN_NAME, ref tp.Luid);
  ok = AdjustTokenPrivileges(htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero);
  ok = ExitWindowsEx(flg, 0);
 }
 public Form1()
 {
  InitializeComponent();
 }
 protected override void Dispose( bool disposing )
 {
  if( disposing )
  {
  if (components != null)
  {
   components.Dispose();
  }
  }
  base.Dispose( disposing );
 }
 #region Windows 窗體設(shè)計(jì)器生成的代碼
 private void InitializeComponent()
 {
  this.groupBox1 = new System.Windows.Forms.GroupBox();
  this.textBox1 = new System.Windows.Forms.TextBox();
  this.button1 = new System.Windows.Forms.Button();
  this.button2 = new System.Windows.Forms.Button();
  this.button3 = new System.Windows.Forms.Button();
  this.groupBox1.SuspendLayout();
  this.SuspendLayout();
  //
  // groupBox1
  //
  this.groupBox1.Controls.Add(this.textBox1);
  this.groupBox1.Location = new System.Drawing.Point(48, 24);
  this.groupBox1.Name = "groupBox1";
  this.groupBox1.Size = new System.Drawing.Size(192, 56);
  this.groupBox1.TabIndex = 0;
  this.groupBox1.TabStop = false;
  this.groupBox1.Text = "系統(tǒng)已運(yùn)行時(shí)間";
  //
  // textBox1
  //
  this.textBox1.Location = new System.Drawing.Point(24, 24);
  this.textBox1.Name = "textBox1";
  this.textBox1.ReadOnly = true;
  this.textBox1.Size = new System.Drawing.Size(152, 21);
  this.textBox1.TabIndex = 1;
  this.textBox1.Text = "";
  //
  // button1
  //
  this.button1.Location = new System.Drawing.Point(16, 112);
  this.button1.Name = "button1";
  this.button1.Size = new System.Drawing.Size(64, 32);
  this.button1.TabIndex = 1;
  this.button1.Text = "關(guān)閉系統(tǒng)";
  this.button1.Click += new System.EventHandler(this.button1_Click);
  //
  // button2
  //
  this.button2.Location = new System.Drawing.Point(112, 112);
  this.button2.Name = "button2";
  this.button2.Size = new System.Drawing.Size(64, 32);
  this.button2.TabIndex = 2;
  this.button2.Text = "注銷(xiāo)系統(tǒng)";
  this.button2.Click += new System.EventHandler(this.button2_Click);
  //
  // button3
  //
  this.button3.Location = new System.Drawing.Point(208, 112);
  this.button3.Name = "button3";
  this.button3.Size = new System.Drawing.Size(64, 32);
  this.button3.TabIndex = 3;
  this.button3.Text = "重啟系統(tǒng)";
  this.button3.Click += new System.EventHandler(this.button3_Click);
  //
  // Form1
  //
  this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  this.ClientSize = new System.Drawing.Size(296, 173);
  this.Controls.Add(this.button3);
  this.Controls.Add(this.button2);
  this.Controls.Add(this.button1);
  this.Controls.Add(this.groupBox1);
  this.Name = "Form1";
  this.Text = "簡(jiǎn)單的關(guān)機(jī)程序";
  this.Load += new System.EventHandler(this.Form1_Load);
  this.groupBox1.ResumeLayout(false);
  this.ResumeLayout(false);
 }
 #endregion
 /// <summary>
 /// 應(yīng)用程序的主入口點(diǎn)。
 /// </summary>
 [STAThread]
 static void Main()
 {
  Application.Run(new Form1());
 }
 private void button1_Click(object sender, System.EventArgs e)
 {
  RebootCommand(EWX_SHUTDOWN + EWX_FORCE);
 }
 private void button2_Click(object sender, System.EventArgs e)
 {
  RebootCommand(EWX_LOGOFF + EWX_FORCE);
 }
 private void button3_Click(object sender, System.EventArgs e)
 {
  RebootCommand(EWX_REBOOT + EWX_FORCE);
 }
 private void Form1_Load(object sender, System.EventArgs e)
 {
  textBox1.Text = (Environment.TickCount / (1000 * 60)).ToString() + "分鐘";
  // 每1秒鐘更新一次TextBox上顯示的系統(tǒng)運(yùn)行時(shí)間
  timer = new System.Threading.Timer(new TimerCallback(OnTimer), null, 0, 1000);
 }
 // 獲得系統(tǒng)已運(yùn)行的時(shí)間
 private void OnTimer(object state)
 {
  textBox1.Text = (Environment.TickCount / (1000 * 60)).ToString() + "分鐘";
  textBox1.Refresh();
 }
 }
}

相關(guān)文章

  • C#中子類(lèi)調(diào)用父類(lèi)的實(shí)現(xiàn)方法

    C#中子類(lèi)調(diào)用父類(lèi)的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#中子類(lèi)調(diào)用父類(lèi)的實(shí)現(xiàn)方法,通過(guò)實(shí)例逐步分析了類(lèi)中初始化構(gòu)造函數(shù)的執(zhí)行順序問(wèn)題,有助于加深對(duì)C#面向?qū)ο蟪绦蛟O(shè)計(jì)的理解,需要的朋友可以參考下
    2014-09-09
  • c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例

    c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例

    這篇文章主要介紹了c# 使用谷歌身份驗(yàn)證GoogleAuthenticator的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01
  • C# 系統(tǒng)全局的異常處理實(shí)現(xiàn)

    C# 系統(tǒng)全局的異常處理實(shí)現(xiàn)

    在C#應(yīng)用程序中,異??赡茉谌魏蔚胤桨l(fā)生,本文主要介紹了C# 系統(tǒng)全局的異常處理實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • C#使用融合通信API發(fā)送手機(jī)短信息

    C#使用融合通信API發(fā)送手機(jī)短信息

    融合云通信服務(wù)平臺(tái),為企業(yè)提供全方位通信服務(wù),發(fā)送手機(jī)短信是其一項(xiàng)核心功能,本文將講述如何使用融合云服務(wù)API為終端手機(jī)用戶(hù)發(fā)送短信信息,并使用?C#?進(jìn)行實(shí)現(xiàn),感興趣的可以了解下
    2024-11-11
  • C# 將字節(jié)流轉(zhuǎn)換為圖片的實(shí)例方法

    C# 將字節(jié)流轉(zhuǎn)換為圖片的實(shí)例方法

    C# 將字節(jié)流轉(zhuǎn)換為圖片的實(shí)例方法,需要的朋友可以參考一下
    2013-03-03
  • C#執(zhí)行外部命令的方法

    C#執(zhí)行外部命令的方法

    這篇文章主要介紹了C#執(zhí)行外部命令的方法,實(shí)例分析了C#調(diào)用CMD.exe程序執(zhí)行外部命令的技巧,需要的朋友可以參考下
    2015-06-06
  • Unity實(shí)現(xiàn)手機(jī)搖一搖震動(dòng)

    Unity實(shí)現(xiàn)手機(jī)搖一搖震動(dòng)

    這篇文章主要為大家詳細(xì)介紹了untiy實(shí)現(xiàn)手機(jī)搖一搖震動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C#中的委托和事件

    C#中的委托和事件

    這篇文章介紹了C#中的委托和事件,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C# Winform實(shí)現(xiàn)繪制圓形進(jìn)度條

    C# Winform實(shí)現(xiàn)繪制圓形進(jìn)度條

    這篇文章主要為大家詳細(xì)介紹了使用C# Winform實(shí)現(xiàn)繪制圓形進(jìn)度條的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編 一起學(xué)習(xí)一下
    2024-02-02
  • Unity實(shí)現(xiàn)多平臺(tái)二維碼掃描

    Unity實(shí)現(xiàn)多平臺(tái)二維碼掃描

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)多平臺(tái)二維碼掃描,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評(píng)論

锡林浩特市| 昌宁县| 兴城市| 林芝县| 灌南县| 德庆县| 奇台县| 丹阳市| 齐河县| 镇巴县| 米林县| 高清| 象州县| 周至县| 安溪县| 丹阳市| 长治县| 军事| 搜索| 大渡口区| 莫力| 南和县| 册亨县| 安顺市| 顺昌县| 汾西县| 四会市| 麻阳| 新龙县| 徐州市| 美姑县| 崇文区| 济南市| 台北市| 临武县| 田阳县| 当雄县| 新乐市| 望奎县| 南京市| 盐山县|