CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

delphi如何实现自动关机?

楼主flytian(飞鸟)2002-01-07 20:46:47 在 Delphi / VCL组件开发及应用 提问

问题点数:20、回复次数:10Top

1 楼ihihonline(潇潇->戒烟)回复于 2002-01-07 20:49:04 得分 0

不会你是用winNT/2000  
  如果是那样的话,太麻烦了Top

2 楼jiju(UNCC)回复于 2002-01-07 21:01:24 得分 0

sendmessage()//参数查一下帮助Top

3 楼Fuxiao(X老师)回复于 2002-01-07 23:15:22 得分 0

你试试这样:   把这两个语句写到Buttonclick或者Ontimer事件中去  
                              exitwindowsex(EWX_LOGOFF+EWX_FORCE,32);  
                              exitwindowsex(EWX_SHUTDOWN,32);Top

4 楼benykim(神仙?妖怪?)回复于 2002-01-07 23:58:20 得分 0

告诉我你的mail,我妹一个给你!Top

5 楼flytian(飞鸟)回复于 2002-01-08 20:22:12 得分 0

多谢!zfly99@etang.comTop

6 楼pdsinfo(新手)回复于 2002-01-08 20:39:16 得分 0

procedure   CloseWindows;  
  var  
        currToken:THandle;  
        prevState,newState:TTokenPrivileges;  
        prevStateLen:DWORD;  
        uid:TLargeInteger;  
  begin  
          //   Set   the   privledges   so   we   CAN   reboot...  
        OpenProcessToken(GetCurrentProcess,   TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,   currToken);  
        LookupPrivilegeValue(nil,   'SeShutdownPrivilege',uid);  
        newState.PrivilegeCount:=1;  
        newState.Privileges[0].Attributes   :=   SE_PRIVILEGE_ENABLED;  
        newState.Privileges[0].Luid   :=   uid;  
        AdjustTokenPrivileges(currToken,   False,   newState,   sizeof(TTokenPrivileges),prevState,   prevStateLen);  
      //   Go   ahead   and   reboot...  
        ExitWindowsEX(EWX_POWEROFF,   0);  
  end;Top

7 楼yjl169(漂泊)回复于 2002-01-27 01:17:16 得分 20

很容易实现  
  点button2就可以了,自己用吧  
  procedure   TForm1.Button2Click(Sender:   TObject);  
  var  
      VerInfo:TOSVersionInfo;  
      hToken:THANDLE;  
      tkp:TOKEN_PRIVILEGES;  
      Nothing:Cardinal;  
  begin  
      VerInfo.dwOSVersionInfoSize:=SizeOf(VerInfo);  
      GetVersionEx(VerInfo);  
      if   VerInfo.dwPlatformId=VER_PLATFORM_WIN32_NT   then  
      Begin  
          OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES   or   TOKEN_QUERY,hToken);  
          LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp.Privileges[0].Luid);  
          tkp.PrivilegeCount:=   1;  
          tkp.Privileges[0].Attributes:=   SE_PRIVILEGE_ENABLED;  
          AdjustTokenPrivileges(hToken,   FALSE,   tkp,   0,nil,   Nothing);  
      End;  
          ExitWindowsEx(EWX_POWEROFF,0);//这句就是关机  
      //ExitWindowsEx(EWX_REBOOT,0);  
  end;Top

8 楼flytian(飞鸟)回复于 2002-03-02 19:26:34 得分 0

谢谢各位!Top

9 楼robyman(Rob man)回复于 2002-03-02 19:36:37 得分 0

同意楼上的Top

10 楼Bellamy(酷公爵)回复于 2002-03-02 19:44:11 得分 0

呵呵!Top

相关问题

  • win2000如何实现自动关机?
  • win2000/profecional 怎么实现自动关机?
  • WIN2K下怎样实现自动关机??
  • win2003 server 如何实现自动关机
  • 请问如何实现自动关机?
  • 请问怎么在NT下用Delphi实现自动关机?我试过ExitWindowsEx不好使,只在98下好使。
  • 关机实现...
  • 如何实现在NT下关机时自动切断电源?
  • 在win2000里如何实现自动关机?
  • 如何在VBA中实现自动开机、关机?

关键词

  • newstate
  • currtoken
  • ewx
  • exitwindowsex
  • privileges
  • uid

得分解答快速导航

  • 帖主:flytian
  • yjl169

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo