手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#调用windows api关机(关机api)示例代码分享
C#调用windows api关机(关机api)示例代码分享
摘要:复制代码代码如下:usingSystem;usingSystem.Runtime.InteropServices;classshoutdow...

复制代码 代码如下:

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);

}

}

【C#调用windows api关机(关机api)示例代码分享】相关文章:

c# 关闭窗体时提示的小例子

C#几种获取网页源文件代码的实例

C#程序最小化到托盘图标操作步骤与实现代码

C#编写Windows服务实例代码

C#生成注册码的实例代码

C#灰度化图像的实例代码

C#跨窗体操作(引用传递) 实例代码

C# 动画窗体(AnimateWindow)的小例子

c# SendMail发送邮件实例代码

C# 调用Delphi dll 实例代码

精品推荐
分类导航