pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1959回复:13

如何无条件关机?(就象直接按机箱电源或直接按键盘Power键一样)

楼主#
更多 发布于:2004-02-17 13:38
如何无条件关机?(就象直接按机箱电源或直接按键盘Power键一样)

一般的WINDOWS程序不行,想用VXD来实现,不知道如何才能实现?
请各位赐教!谢谢

最新喜欢:

kilroy_guokilroy...
xiangshifu
驱动小牛
驱动小牛
  • 注册日期2002-07-25
  • 最后登录2013-10-18
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望20点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-06 17:25
再次声明:不是在应用程序中关机,而是在VXD里关机!
多谢各位的回复,但在回复时一定要看清题目
地板#
发布于: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;
}
地下室#
发布于:2004-04-06 14:08
ExitWindow(EWX_SHUTDOWN | EWX_FORCE);
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-06 12:54
[quote]out 64h,0feh
如果没有记错的话。

对 [/quote]

我试了,这个指令是重启动机器,没有关机
另外,有不有这方面的参考资料?谢谢
qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-04-06 09:08
out 64h,0feh
如果没有记错的话。

pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-04-06 08:40
你不应该在这里问这个问题,到CSDN的VC版去问吧,10分钟之内就会有令你满意的答案。


我是想在VXD里实现无条件关机,就象按POWER键一样,并不是在应用程序里关机。
wuyanfeng
驱动小牛
驱动小牛
  • 注册日期2003-08-26
  • 最后登录2011-05-06
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望127点
  • 贡献值0点
  • 好评度103点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-04-05 22:07
你不应该在这里问这个问题,到CSDN的VC版去问吧,10分钟之内就会有令你满意的答案。

out 64h,0feh
如果没有记错的话。
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-04-05 17:41
你不应该在这里问这个问题,到CSDN的VC版去问吧,10分钟之内就会有令你满意的答案。
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-04-05 17:11
ding
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-02-18 09:58
ExitWindowEx是向所有运行的程序发送关机消息(WM_QUERYENDSESSION)后再关机的,若有程序拦截这个消息并返回FALSE,就关不了机了。
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-02-18 09:29
ExitWindowsEx
函数不行?
不限容量的免费邮箱 www.k65.net
pursuer_zhao
驱动牛犊
驱动牛犊
  • 注册日期2003-10-23
  • 最后登录2005-10-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-02-17 17:14
怎么没人理俺呀
游客

返回顶部