首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

winform,该如何处理

2012-08-21 
winform我想做个winform 开发,有个button控件,怎么写代码让我点一下该按钮就可以让电脑关机[解决办法]DOS

winform
我想做个winform 开发,有个button控件,怎么写代码让我点一下该按钮就可以让电脑关机

[解决办法]
DOS命令:shutdown /s /t 100
[解决办法]

C# code
using System; using System.Runtime.InteropServices;    class shoutdown{    [StructLayout(LayoutKind.Sequential, Pack=1)]    internal struct TokPriv1Luid    {       public int Count;       public long Luid;       public int Attr;    }   [DllImport("kernel32.dll", ExactSpelling=true) ]    internal static extern IntPtr GetCurrentProcess();   [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]    internal static extern bool OpenProcessToken( IntPtr h, int acc, ref IntPtr phtok );   [DllImport("advapi32.dll", SetLastError=true) ]    internal static extern bool LookupPrivilegeValue( string host, string name, ref long pluid );   [DllImport("advapi32.dll", ExactSpelling=true, SetLastError=true) ]    internal static extern bool AdjustTokenPrivileges( IntPtr htok, bool disall, ref TokPriv1Luid newst, int len, IntPtr prev, IntPtr relen );   [DllImport("user32.dll", ExactSpelling=true, SetLastError=true) ]    internal static extern bool ExitWindowsEx( int flg, int rea );   internal const int SE_PRIVILEGE_ENABLED = 0x00000002;    internal const int TOKEN_QUERY = 0x00000008;    internal const int TOKEN_ADJUST_PRIVILEGES = 0x00000020;    internal const string SE_SHUTDOWN_NAME = "SeShutdownPrivilege";    internal const int EWX_LOGOFF = 0x00000000;    internal const int EWX_SHUTDOWN = 0x00000001;    internal const int EWX_REBOOT = 0x00000002;    internal const int EWX_FORCE = 0x00000004;    internal const int EWX_POWEROFF = 0x00000008;    internal const int EWX_FORCEIFHUNG = 0x00000010;   private static void DoExitWin(int flg)    {       bool ok;       TokPriv1Luid tp;       IntPtr hproc = GetCurrentProcess();       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 static void Main()       {          Console.WriteLine("正在关机……");          // 修改 EWX_SHUTDOWN 或者 EWX_LOGOFF, EWX_REBOOT等实现不同得功能。          // 在XP下可以看到帮助信息,以得到不同得参数          // SHUTDOWN /?          DoExitWin(EWX_SHUTDOWN);       } }
[解决办法]
探讨

2楼大神再问个问题c中main函数中return(0)是将0返还给那个函数

[解决办法]
探讨

哦,那怎么根据返回值判断执行是成功还是失败的呢?

[解决办法]
主要还是看函数的返回类型void的就不用返回了。

热点排行