日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#關機代碼的實現(xiàn)淺析

C#關機代碼的實現(xiàn)是如何的呢?我們經(jīng)常會碰到這樣的需求,那么在這方面我們是如何實現(xiàn)的呢?讓我們還是看看實際的代碼操作,希望對于你C#關機代碼的開發(fā)有所啟示。

目前創(chuàng)新互聯(lián)建站已為1000+的企業(yè)提供了網(wǎng)站建設、域名、雅安服務器托管網(wǎng)站托管運營、企業(yè)網(wǎng)站設計、西夏網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

C#關機代碼實現(xiàn)實例:(支持Win XP下的關機)

 
 
 
  1. using System.Runtime.InteropServices;  
  2. //C#關機代碼  
  3. [StructLayout(LayoutKind.Sequential, Pack=1)]   
  4.  internal struct TokPriv1Luid   
  5. {   
  6.  public int Count;   
  7.  public long Luid;   
  8.  public int Attr;   
  9. }   
  10.  
  11. //C#關機代碼  
  12. [DllImport("kernel32.dll", ExactSpelling=true) ]   
  13. internal static extern IntPtr GetCurrentProcess();   
  14.  
  15. [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]   
  16. internal static extern bool OpenProcessToken( IntPtr h, int acc, ref IntPtr phtok );   
  17.  
  18. [DllImport("advapi32.dll", SetLastError=true) ]   
  19. internal static extern bool LookupPrivilegeValue( string host, string name, ref long pluid );   
  20.  
  21. [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]   
  22. internal static extern bool AdjustTokenPrivileges( IntPtr htok, bool disall,   
  23.  ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen );   
  24.  
  25. [DllImport("user32.dll", ExactSpelling=true, SetLastError=true) ]   
  26. internal static extern bool ExitWindowsEx( int flg, int rea );   
  27.  
  28. internal const int SE_PRIVILEGE_ENABLED = 0x00000002;   
  29. internal const int TOKEN_QUERY = 0x00000008;   
  30. internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;   
  31. internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";   
  32. internal const int EWX_LOGOFF = 0x00000000;   
  33. internal const int EWX_SHUTDOWN = 0x00000001;   
  34. internal const int EWX_REBOOT = 0x00000002;   
  35. internal const int EWX_FORCE = 0x00000004;   
  36. internal const int EWX_POWEROFF = 0x00000008;   
  37. internal const int EWX_FORCEIFHUNG = 0x00000010;   
  38. //C#關機代碼  
  39. private void DoExitWin( int flg )   
  40. {   
  41.  bool ok;   
  42.  TokPriv1Luid tp;   
  43.  IntPtr hproc = GetCurrentProcess();   
  44.  IntPtr htok = IntPtr.Zero;   
  45.  ok = OpenProcessToken( hproc, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, ref htok );   
  46.  tp.Count = 1;   
  47.  tp.Luid = 0;   
  48.  tp.Attr = SE_PRIVILEGE_ENABLED;   
  49.  ok = LookupPrivilegeValue( null, SE_SHUTDOWN_NAME, ref tp.Luid );   
  50.  ok = AdjustTokenPrivileges( htok, false, ref tp, 0, IntPtr.Zero, IntPtr.Zero );   
  51.  ok = ExitWindowsEx( flg, 0 );   
  52. }   
  53.  
  54. public void Reboot()   
  55. {   
  56.  DoExitWin( EWX_REBOOT );   
  57. }   
  58. //C#關機代碼  
  59. //點擊按鈕,執(zhí)行關機事件  
  60. private void button1_Click(object sender, System.EventArgs e)  
  61. {  
  62.  DoExitWin(1);  
  63. }  

C#關機代碼的實現(xiàn)過程就向你介紹到這里,希望對你了解和學習C#關機代碼有所幫助。


網(wǎng)頁標題:C#關機代碼的實現(xiàn)淺析
當前網(wǎng)址:http://www.dlmjj.cn/article/dpdjsie.html