说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

:为什么用exitwindowsex()不能关掉电源,而是提示“现在可以安全关机啦”后才能手动关机

编辑:说三道四文库 发布时间:2017-02-21 08:57
HTML文档下载 WORD文档下载 PDF文档下载
不会吧,我用的时候怎么没问题?ExitWindowsEx(EWX_SHUTDOWN,0)?这个函数没错的。
TO:xinfang

会不会是你的机器本身不支持“关闭电源”?
是ATX吗?
是不是电源管理设置有问题
在windows开始菜单里选“关机”,如果显示出来的是“现在可以安全关机”,那程序当然
也无能为力。
机器太老啦,呵呵
应该是机子的问题!
机器问题吧。
用汇编关闭
to ,所有人
在菜单中选择关机都能正常的关机
不的啦我机器没有问题,是atx的,装的是win2000中文版的
不过我是用vb写的,但是vb栏中没人解决,只有过来问啦
多谢,多谢
在2000中要想用ExitWindowsEx()关机的话有些麻烦。给你一个例子程序,或许有帮助




'''
'''与Windows NT关机相关的API函数和类型
'''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long



'The LookupPrivilegeValue function retrieves the locally unique
'identifier (LUID) used on a specified system to locally represent
'the specified privilege name.
Private Declare Function LookupPrivilegeValue Lib "advapi32" _
   Alias "LookupPrivilegeValueA" _
   (ByVal lpSystemName As String, _
    ByVal lpName As String, _
    lpLuid As LUID) As Long

'Get the operating system version
Public Declare Function GetVersion Lib "kernel32" () As Long

'The GetCurrentProcess function returns a pseudohandle for the
'current process.
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

'The AdjustTokenPrivileges function enables or disables privileges
'in the specified access token. Enabling or disabling privileges
'in an access token requires TOKEN_ADJUST_PRIVILEGES access.
Private Declare Function AdjustTokenPrivileges Lib "advapi32" _
         (ByVal TokenHandle As Long, _
          ByVal DisableAllPrivileges As Long, _
          NewState As TOKEN_PRIVILEGES, _
          ByVal BufferLength As Long, _
          PreviousState As TOKEN_PRIVILEGES, _
          ReturnLength As Long) As Long
'The OpenProcessToken function opens the access token associated with
'a process.
Private Declare Function OpenProcessToken Lib "advapi32" _
   (ByVal ProcessHandle As Long, _
    ByVal DesiredAccess As Long, _
    TokenHandle As Long) As Long
    
Public Declare Function GetLastError Lib "kernel32" () As Long
Public Declare Sub SetLastError Lib "kernel32" (ByVal dwErrCode As Long)
    

Private Type LUID
    UsedPart As Long
    IgnoredForNowHigh32BitPart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
    TheLuid As LUID
    Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
   PrivilegeCount As Long
   TheLuid As LUID
   Attributes As Long
End Type

Public Const EWX_SHUTDOWN = 1 '关机常数

'''
'''调整进程的权限
'''
Public Sub AdjustToken()

      '********************************************************************
      '* This procedure sets the proper privileges to allow a log off or a
      '* shut down to occur under Windows NT.
      '********************************************************************

         Const TOKEN_ADJUST_PRIVILEGES = &H20
         Const TOKEN_QUERY = &H8
         Const SE_PRIVILEGE_ENABLED = &H2

         Dim hdlProcessHandle As Long
         Dim hdlTokenHandle As Long
         Dim tmpLuid As LUID
         Dim tkp As TOKEN_PRIVILEGES
         Dim tkpNewButIgnored As TOKEN_PRIVILEGES
         Dim lBufferNeeded As Long

         'Set the error code of the last thread to zero using the
         'SetLast Error function. Do this so that the GetLastError
         'function does not return a value other than zero for no
         'apparent reason.
         SetLastError 0

         'Use the GetCurrentProcess function to set the hdlProcessHandle
         'variable.
         hdlProcessHandle = GetCurrentProcess()

         If GetLastError <> 0 Then
            MsgBox "GetCurrentProcess error==" & GetLastError
         End If

         OpenProcessToken hdlProcessHandle, _
            (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle

         If GetLastError <> 0 Then
            MsgBox "OpenProcessToken error==" & GetLastError
         End If

         'Get the LUID for shutdown privilege
         LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid

         If GetLastError <> 0 Then
            MsgBox "LookupPrivilegeValue error==" & GetLastError
         End If

         tkp.PrivilegeCount = 1    ' One privilege to set
         tkp.TheLuid = tmpLuid
         tkp.Attributes = SE_PRIVILEGE_ENABLED

         'Enable the shutdown privilege in the access token of this process
         AdjustTokenPrivileges hdlTokenHandle, _
                               False, _
                               tkp, _
                               Len(tkpNewButIgnored), _
                               tkpNewButIgnored, _
                               lBufferNeeded

         If GetLastError <> 0 Then
            MsgBox "AdjustTokenPrivileges error==" & GetLastError
         End If
End Sub


有了以上的声明后,在你调用ExitWindowsEx()时,首先判断一下操作系统的版本,如果是
NT,则先调用AdjustToken(),然后再调用ExitWindowsEx(),方可成功。
不是这样的,关闭Windows2000是可以的,但是之后还要手动关闭电源,我也碰到过这样的问题,不知道怎么解决?
to:turbo(我是菜鸟我要分) 
打开win2000的高级电源管理支持
只要通過菜單能關閉電源的,則硬件緷對沒問題。
在win98下應可以直接用ExitWindows()關機。
但在win2000下需先取得關機的權限才可以,具体你可以查msdn中關于ExitWindows()的說明(要是2000版的才可以)。要用到的函數大概有OpenProcessToken(),LookupPrivilegeValue(),AdjustTokenPrivileges()這些。

我有用vc實現的完整程序,你要的話我可以給你。
好呀,管他vc,vb,我通吃嘿嘿。。
忘了emial darkleopard0@163.com,嘿嘿。。不好意思
看看是否CMOS设置和Windows电源管理设置对不对
http://www.csdn.net/expert/topic/215/215099.shtm
查看你的主板是否支持自动关机和CMOS的设置。
如果主板不支持自动关机就只能手动了。
可能是主板\电源的问题,以前的老电源不能支持自动关机
你的参数用错了
注意,你大概用的是EWX_SHUTDOWN,这个参数的意思是
Shuts down the system to a point at which it is safe to turn off the power. 
就是让你手动poweroff
建议你试试EWX_POWEROFF
可直接关机,msdn上是这样说的:
Shuts down the system and turns off the power. The system must support the power-off feature. 
微软2014,有你期待的吗? 映趣科技发布inWatch Z/inWatch X 后者采用全彩透明柔性屏 程序员没有天才:暴风影音首席架构师鲍金龙访谈 开放式创新改变世界——OpenStack生态系统将重新洗牌 Java 8最终发布日期敲定,即使有bug也要发布 Meteor PK Django,谁更适合开发实时Web应用? 学编程就像选家具:去宜家还是从种树开始? 前车之鉴 十二个年度最差设计网站汇集 冷暖交替,2014年编程兴衰趋势预测 诺基亚出Android手机,微软或将受惠 苹果不收购Nest的大猜想 Netflix开源S3一致性提升利器S3mper Fi 《近匠》第06期:UCloud——目标!完整云服务 小三上位:Windows Phone不容忽视的契机 “详解Visual Studio 2013”全国巡讲北京站:无忧开发iOS及Android应用 Chrome最新版:快速静音及在Win8中建Chrome OS系统 雅虎COO Henrique de Castro因业绩不佳被解雇 分析比特币背后的数据算法,抢占背后巨大市场先机 美食菜谱将会成创业风口的两大理由 Windows XP杀毒软件更新 将被延至2015年7月 小心,商家已经盯上你了 一软一硬 让你时刻保持清醒的可穿戴产品 寓教于乐 贝瓦依托移动平台打造中国式儿童“轻教育” 中科创达:CES2014上的中国红 SA:2014年移动互联网十大技术创新预测 回顾2013:HBase的提升与挑战 Google打造云中Hadoop便捷版,强势对抗AWS 【信息图】专业Web设计师和业余设计师的发展状况并不协调 先试后买:Agawi推新型广告服务AppGlimpse 搜狗CEO王小川:“硬件免费”是误区 平均比Hive快24倍,Impala剑指Stinger ScrollWindow有什么用?清高手详细说明! 急!:关于ORACLE9的OEM问题,为什么在OEM中不能进入DBA STUDIO,总是提示搜索不到数据库,请问怎么搜索 八数码问题一定有解吗? 如何写库房盘点部分?(讲原理不要讲代码) 小问题,大家帮我解决一下(类型转换问题) 帮忙看一下这样的.Prj 文件是什么C语言工具生成的。早得我好苦呀 控件签名问题!! 救救我,用VB打包后安装的程序运行出错class not registered!有DBGRID控件 java有什么好? 关于Oracle触发器请教: 在弹出的子窗口关闭的同时,父窗口跳转到另一链接如何做,谢谢! TO:enmity(灵感之源) 如何去掉调用Dll在任务栏产生的图标 ORACLE 8的企业版可以糽一台PC上吗? 急救!1000块钱由1分,2分,5分,1角,2角,5角,1元,2元,5元,10元,20元,50元,100元的任意组合,可有多少种组合? 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决????? 如何在98下设置默认浏览器? to 吴文智 先生 怎样用Adaptive Server Anywhere6.0发布网络版?PB菜鸟求救.... 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决??? 菜鸟问题,CString 如何转化成整形 !!!在Delphi中不规则窗体的快速显示??? 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决? 请教大侠!!!!vb调用com组件方法时传递参数类型的问题 updatesql出错: 在java中如何生成可单独安装运行的应用程序呀?就像.exe一样! 请问有没有关于C#的源代码或资料的网站呢? 怎样定位access数据库的路径? 在32代码中调用过16DLL的高手请进! 高分请教!!!!急请大侠帮忙!!!!!!!!!!!!!!! 我的电脑有两个内存条(不是一种型号),今天用优化大师优化了一下,结果出现不能启动的现象,请问各位高手如何解决 -???? 请大家出谋:朋友要离了,怎么安慰她? pfc问题 jin_shan(DOS)请进来看看,谢谢!! 大家平时玩什么网络游戏?请留下ID和擅长的游戏(玉笛书生有偿调查) 请帮一个忙? 怎么样在程序里注册OCX控件件? 奇怪,为什么我的电脑在死机后重起就不能浏览我写的asp页面了 各位,我現在到這一步了,下一步要做什麼 怎样把一个 Frame 窗体放进一个Penal 中??? 我编了4年程序,可是我在这里的提问没有一个人的回答让我满意!!!! 搞张jbuilder6破解? 特殊字符串查找 请问Win2k pro的Inetinfo.exe进程怎么占用CPU达99%呀?怎么解决呢? 自由自在的人,你在吗? 后缀是nlc的电子图书那里找? 请问vc里缺省参数的函数是怎么定义的?(70分) 救救我!!!数据库管理的几个基础问题?? 急需控件 请教一个关于CListCtrl的问题??? c语言实现"智力游戏" --? 1000字 安溪家乡的变化作文1000字 家乡的变化作文 有谁知道 知道的请回答 含锌量过多怎么办? 观察动物作文400字,不要写事!要和四年级4单元的课文一样 家乡的味道 作文1000字.ps;家乡在四川,成都 ■苹果含锌量的多少?到底多不多啊?锌应该不会大量存在于蔬果之中的.刚才我还看了一个关于苹果营养疗效的文章.和锌\有关的.我就感觉不对劲!现在证实了我的想法 ,苹果关键应该不是锌,在 关于友情的作文300字少一点的 作文 《变化》 1000字不要家乡的变化,其他都可以,字数只要不低于600字就可以了快点! 什么食物含锌量高? 太阳,月球,地球有什么关系(一句话) 脯氨酸在植物中的作用 科幻作文350字左右关于角色的 人体所需要的八种必需氨基酸是什么? 什么是亚氨基酸?为什么脯氨酸是亚氨基酸? 对婴儿来说,有几种氨基酸必须由膳食蛋白质供给,称必需氨基酸. 太阳丶月亮丶地球之间是什么关系 写动物的生命启示作文400字 请问:“必需氨基酸比值愈接近人体必需氨基酸模式的食物的蛋白质属优质蛋白质”这句话错吗?错在哪里? 人体有哪八种必需氨基酸和哪十二种非必需氨基酸? 脯氨酸是不是α-氨基酸可是给出的结构式不是α-氨基酸啊!亚氨基和羧基不在同一个碳原子上?是结构式错了还是别的? 我喜欢的动物 小兔400字左右作文急! 人体所需的8种必需氨基酸分别是什么? 关于动物的作文 400字左右 给我一篇关于我喜欢的动物,作文,大概500字急! 人体必需氨基酸有哪八种? 脯氨酸在植物中都有哪些作用?要全,大哥大姐们, 作文 我喜欢的动物:波斯猫(400字) 推荐一篇关于友情或亲情的文章 包括推荐理由,理由不少于300字 《生活的美好》作文,300-400字左右 我喜欢的动物 450字作文字要多一点,好一点 太阳、地球、月亮之间的关系是什么? 富含氨基酸、蛋白质的食物1.什么食物富含富含氨基酸、蛋白质?2.鱼、海鲜食物富含富含氨基酸、蛋白质吗?请分别作答.谢谢! 作文 我喜欢的动物:加菲猫(400字)急.! 作文 我最棒500字 哪种食物富含氨基酸多? 什么菜含锌量高 作文“我最棒”600字 含锌高的食物有哪些, 春季的作文(350字左右) 《做饭我最棒作文急需,600字! 作文,我的五一长假,450字左右 锌含量高的食物 写动物的作文〔400字左右〕最好是范文 外语作文:是否恢复五一长假.130字左右 什么食物 锌含量比较高? 人体8种必需氨基酸分别是什么? 氨基酸叶面肥售价各种氨基酸叶面肥的价格是多少批发价! 写一篇题目叫《过年》的作文要求350~400字左右. 日常生活中有哪些食物含有较多的”完全蛋白质”(含8种必需氨基酸)? 氨基酸叶面肥的制作工艺 什么食物锌元素含量比较高? 在植物性的食品中,含有人类所必需氨基酸完全的食品有哪些? 氨基酸叶面肥技术指标? 以我发现了什么什么,写一篇作文200字 哪些食物富含必需氨基酸的动物蛋白 汕头的变化1000字作文 我发现了什么的作文 350字 作文我发现了什么100字 党在我心中作文(通过家乡的变化来描写党)1000字左右.急!我的家乡在平江,写建党以来党对平江做的贡献.(不要写一些很大的话,就写平江原来怎样,后来怎样,当然,要跟党的贡献有关的).不 什么东西富含氨基酸 观察动物作文400字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn