这儿有个API帮助虽然是VB版的,不过所有的参数都是一样的,可以参考着用的!!
你可以去这儿下载: http://www.dbgnu.com
虽然不全,但大多数都有了,而且还可以自己增加的!!
好东西就应该大家共享的!!!!!!!!!!!!!!
补充日期: 2002-06-07 11:26:04
定义格式:
{ access } FUNCTION returndatatype name ( { { REF } datatype1 arg1,
..., { REF } datatypen argn } ) LIBRARY "libname"
ALIAS FOR "extname"
在declare中的Global External Functions中声明,格式如下:
FUNCTION Long ExitWindowsEx (Long uFlags,long dwReserved ) LIBRARY "user32" Alias for "ExitWindowsEx"
参数说明:
Long,非零表示成功,零表示失败。会设置GetLastErroruFlags --------- Long,指定下述一个或多个标志(用OR运算符合并到一起)
EWX_FORCE
强迫中止没有响应的进程
EWX_LOGOFF
中止进程,然后注销
EWX_SHUTDOWN
关掉系统电源(如果可能的话,ATX电源就可以)
EWX_REBOOT
重新引导系统
EWX_SHUTDOWN
关闭系统
dwReserved ----- Long,保留,设为零这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作
EWX_LOGOFF = 0
EWX_SHUTDOWN = 1
EWX_REBOOT = 2
EWX_FORCE = 4
如果仅仅是关机的话,你还可以参照:Exitwindows函数
C#调用dll中的函数
ExitWindowsEx(EWX_LOGOFF , 0); //注销
ExitWindowsEx(EWX_SHUTDOWN, 0); //关机,但是,不关闭电源
ExitWindowsEx(EWX_REBOOT , 0); // 重启
ExitWindowsEx(EWX_FORCE , 0); //强制关机
ExitWindowsEx(EWX_POWEROFF, 0); //关机,并且关闭电源
ExitWindowsEx(EWX_FORCEIFHUNG , 0); //
ExitWindowsEx
98下直接用,XP下必须提升权限。
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0)) //参数在这里设置。
return FALSE;
return TRUE;
}
你可以去这儿下载: http://www.dbgnu.com
虽然不全,但大多数都有了,而且还可以自己增加的!!
好东西就应该大家共享的!!!!!!!!!!!!!!
补充日期: 2002-06-07 11:26:04
定义格式:
{ access } FUNCTION returndatatype name ( { { REF } datatype1 arg1,
..., { REF } datatypen argn } ) LIBRARY "libname"
ALIAS FOR "extname"
在declare中的Global External Functions中声明,格式如下:
FUNCTION Long ExitWindowsEx (Long uFlags,long dwReserved ) LIBRARY "user32" Alias for "ExitWindowsEx"
参数说明:
Long,非零表示成功,零表示失败。会设置GetLastErroruFlags --------- Long,指定下述一个或多个标志(用OR运算符合并到一起)
EWX_FORCE
强迫中止没有响应的进程
EWX_LOGOFF
中止进程,然后注销
EWX_SHUTDOWN
关掉系统电源(如果可能的话,ATX电源就可以)
EWX_REBOOT
重新引导系统
EWX_SHUTDOWN
关闭系统
dwReserved ----- Long,保留,设为零这个函数调用后会立刻返回,系统关闭过程是在后台进行的。注意先中止自己的应用程序,使关闭过程更显平顺。当然,您的进程必须有足够的优先权,否则也不能执行这种操作
EWX_LOGOFF = 0
EWX_SHUTDOWN = 1
EWX_REBOOT = 2
EWX_FORCE = 4
如果仅仅是关机的话,你还可以参照:Exitwindows函数
C#调用dll中的函数
ExitWindowsEx(EWX_LOGOFF , 0); //注销
ExitWindowsEx(EWX_SHUTDOWN, 0); //关机,但是,不关闭电源
ExitWindowsEx(EWX_REBOOT , 0); // 重启
ExitWindowsEx(EWX_FORCE , 0); //强制关机
ExitWindowsEx(EWX_POWEROFF, 0); //关机,并且关闭电源
ExitWindowsEx(EWX_FORCEIFHUNG , 0); //
ExitWindowsEx
98下直接用,XP下必须提升权限。
BOOL MySystemShutdown()
{
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
// Get a token for this process.
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return( FALSE );
// Get the LUID for the shutdown privilege.
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME,
&tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1; // one privilege to set
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
// Get the shutdown privilege for this process.
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0,
(PTOKEN_PRIVILEGES)NULL, 0);
if (GetLastError() != ERROR_SUCCESS)
return FALSE;
// Shut down the system and force all applications to close.
if (!ExitWindowsEx(EWX_POWEROFF | EWX_FORCE, 0)) //参数在这里设置。
return FALSE;
return TRUE;
}