阅读:1957回复:13
如何无条件关机?(就象直接按机箱电源或直接按键盘Power键一样)
如何无条件关机?(就象直接按机箱电源或直接按键盘Power键一样)
一般的WINDOWS程序不行,想用VXD来实现,不知道如何才能实现? 请各位赐教!谢谢 |
|
最新喜欢:![]() |
沙发#
发布于:2004-02-17 17:14
怎么没人理俺呀
|
|
板凳#
发布于:2004-02-18 09:29
ExitWindowsEx
函数不行? |
|
|
地板#
发布于:2004-02-18 09:58
ExitWindowEx是向所有运行的程序发送关机消息(WM_QUERYENDSESSION)后再关机的,若有程序拦截这个消息并返回FALSE,就关不了机了。
|
|
地下室#
发布于:2004-04-05 17:11
ding
|
|
5楼#
发布于:2004-04-05 17:41
你不应该在这里问这个问题,到CSDN的VC版去问吧,10分钟之内就会有令你满意的答案。
|
|
6楼#
发布于:2004-04-05 22:07
你不应该在这里问这个问题,到CSDN的VC版去问吧,10分钟之内就会有令你满意的答案。 out 64h,0feh 如果没有记错的话。 |
|
7楼#
发布于:2004-04-06 08:40
你不应该在这里问这个问题,到CSDN的VC版去问吧,10分钟之内就会有令你满意的答案。 我是想在VXD里实现无条件关机,就象按POWER键一样,并不是在应用程序里关机。 |
|
8楼#
发布于:2004-04-06 09:08
out 64h,0feh 对 |
|
9楼#
发布于:2004-04-06 12:54
[quote]out 64h,0feh 对 [/quote] 我试了,这个指令是重启动机器,没有关机 另外,有不有这方面的参考资料?谢谢 |
|
10楼#
发布于:2004-04-06 14:08
ExitWindow(EWX_SHUTDOWN | EWX_FORCE);
|
|
11楼#
发布于:2004-04-06 14:09
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_SHUTDOWN | EWX_FORCE, 0)) return FALSE; return TRUE; } |
|
12楼#
发布于:2004-04-06 17:25
再次声明:不是在应用程序中关机,而是在VXD里关机!
多谢各位的回复,但在回复时一定要看清题目 |
|
13楼#
发布于:2004-04-06 20:52
关机应该只要改几个指令就可以了,一下代码请参考
下面的俩个程序分别实现RESET启动和热启动.经过汇编,连接再转 换成文件后才能运行. RESET.ASM (RESET开关复位启动程序) CODE1 SEGMENT AT 0FFFFH ASSUME CS:CODE1 ADDR LABEL FAR CODE1 ENDS CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:CODE,ES:CODE START: JMP FAR PTR ADDR CODE ENDS END START BOOT.ASM (热启动程序) CODE1 SEGMENT AT 0FFFFH ASSUME CS:CODE1 ADDR LABEL FAR CODE1 ENDS CODE SEGMENT ORG 100H ASSUME CS:CODE,DS:CODE,ES:CODE START: MOV AX,0040H MOV DS,AX MOV AX,1234H MOV SI,0072H MOV [SI],AX JMP FAR PTR ADDR CODE ENDS END START |
|