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

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

编辑:说三道四文库 发布时间:2017-03-24 12:33
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. 
DARPA慷慨解囊的背后:Python与大数据的火花 研发周报:神奇!1KB JavaScript代码编写的3D蜜蜂 移动周报:65岁传奇Android工程师谈开发 “部落战争”开发商Supercell融资1亿美金 投资公司争先恐后 Kiip 90后华裔励志故事:从遭解雇到誉满全球 大数据基因测序的成本逼近1000美元:个性化医疗的时代来临 携程开放平台发力 将实现旗下产品全流程API支持 Puppet labs发布2013自动化运维报告 “国”字号开发者:航旅纵横负责人薄满辉专访 金山云杨钢:核心算法保证安全和低成本 加速软件交付 企业级模拟测试服务CA LISA受追捧 盛大云业务重点转向自服务 转战中小型企业:Prediction API请求一个月内飙升至7亿多次 利用光子 耶鲁大学研究人员让量子计算机离现实更近一步 技术为王的云计算会让IT部门消亡么? 从Discuz到APP:安米移动社区转化工具 覆盖全领域:Google、Facebook、Twitter等大师的最佳推荐 苹果CEO宣布更改保修政策 并向中国用户道歉 拒绝使用现有Web组件的6个愚蠢理由 Github宣布支持SVN方式访问 iPad,正在改变什么? Go Mobile:行业大牛谈行业应用开发 亚马逊Cloud Drive新增文件同步功能 对抗Dropbox 35万奖金发放,BlackBerry 10大赛奖项揭晓 超越Google Apps:排行榜前10的相关云应用 荣耀终将消散 全球第一台千万亿次级超级计算机退役 谷歌已推免费Android和iPhone版Quickoffice,微软你呢? 用于响应式设计的9个CSS技巧 微软Surface Pro正式登陆中国市场 售价6588元起 岳雷:Windows Server 2012虚拟化性能提升巨大 陈健:Windows Server 2012让企业轻松管理IT 有谁熟悉DB2?(关于VW中元数据!) 如何将光盘中的一个子目录映射成一个硬盘盘符? 关于Applet!请指教 我现在要做一个象性能监视中的显示表格(使用VC),监视网络流量,和Media Server 的Stream。有没有低层的API? 蚂蚁下载 关于弹出窗口的问题 串口通讯的问题 关于_RecordsetPtr的一个问题,百思不得其解,请求帮助。 文档中心的帖子怎么收藏? 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊? 如何有一个人成分6000行的文本文件,请问如何预览后打印出来. 其他应用程序能调用notes中的代理吗 ?在我的表中设了一字段PKID,此字段是主键并且自增,当我插入一条记录时,我如何取得此记录的PKID(Hothehe) 这个帖子怎么打不开? 急需解 请问高手,设计一个分时系统要注意些什么? 哪有c++builder6的帮助和列子 SourceSafe客户端登陆问题 呵呵,几天没来,这里全变样了,不错不错,漂亮多了。另外,提点建议。 在C/C++ 程序中怎样延时? 用sql语句,怎样取最后10条记录, 然后是最后第20-10条 , 30-20条 cockhorse(木马)来拿分,另找WindowsCE.net 我刚请我1个要好的朋友(但是很穷)吃饭 如何清空数据日志呢? 没人回答,我再问一遍关于ADODataSet中参数传递的问题 如何删除一个被定义主键的表 关于ListBox,请教!(在线等待) tomcat4配置问题!请高手指教! jsp程序如保加密呀让其它人查看不到原文件,但能在服务器上运行. 请问: 有时将Dephi5最小化,作了别的windows操作后,再返回时提示………… _RecordsetPtr的问题,急……… 有关键盘和鼠标的问题 大家好!一个新手的问题。希望得到大家的帮助! 关于COM和ALT有什么好书吗? select max()的语法怎么用,怎么就是不对。 怎么才能够给在程序运行时动态生成的控件添加事件代码?请教有方法吗? WIN2000路由nat的问题 拿到scjp,工资起价要多少? 大家好!一个新手的问题。希望得到大家的帮助! 在大连找做BCB很难,也很苦恼,难道就没人用他吗??谁知道有没有大连公司用BCB。请回答 我将十分关注!!!!!!!!!! 有谁知道j2ee服务器EJB的客户端代码是怎样的? 那位高手帮我做个毕设(销售管理系统) to txinfo(冰炎两重天) To; net_lover(孟子E章),这个函数没有得到任何值,而且提示网页Javascript出错了! 我忘了开多次方 的函数了请告之! 建表问题 我用wise install 打包vb6的程序,可runtimes打不进去,请帮忙 寻李维的四套delphi电子书,在哪儿下?每套20分,第一个正确的给分 有没有人用过xa方法呀 如何在全局函数中对传入的dw参数取出其所在的window,而不另传一window参数? 请问斑竹LIULEE:为何我的Jaguar CTS 3.6.1中的菜单和对话框中的字母多是小方块 什么时候设置oracle的总内存数? Unix 字符用户界面,为什么menu库不能调用,在curses库却可以? 酒精是怎么减缓神经冲动传导的?简述其机制! 火柴梗在燃烧时,火焰向上为什么容易熄灭? 不锈钢焊点怎么生锈了 性行为,为什么能刺激神经兴奋. 火是什么?是由什么物质构成的吗,为什么谁可以熄灭火,为什么划火柴就会产生火? 凡士林进入滴定管洗不出来怎么办?可能活塞处涂多了!进入下面的小管了,洗不出来,有什么办法? 求 考研题 论述神经细胞兴奋时 兴奋性变化过程及其生理意义 火柴是磷做的,火柴合上划火柴的哪部分是什么材枓做的呀? 哪里可以买到酸式滴定管的玻璃塞?酸式滴定管上的玻璃塞没了,问了一家试剂商店,说是不单卖,我就是想看看能不能配上 湿纸放在酒精粉上为什么烧不着? 实验室 划火柴和熄灭火柴的方法 如果酸式滴定管的出口被涂旋塞的凡士林严重堵塞,正确的处理方法是 汗液中滴入硝酸银溶液,有什么现象 《划火柴》歌词是什么意思?《划火柴》歌词是什么意思?《划火柴》歌词是什么意思? 如果酸式滴定管出现凡士林堵塞管口,应如何处理 酒精能让人兴奋吗想试试没酒量,不知道能不能让人兴奋 气液平衡数据在哪里查 酸式滴定管涂抹了凡士林后还是会漏,用的是白凡士林,为什么呢?试过还多次都一样大概1min一滴 汞、镉、铅和部分氮的元素符号为___的氧化物 纸为什么在混合三分之二的酒精三分之一的水中浸泡后就烧不坏? 求常压101.33kpa下 乙醇-正丙醇混合液的气液平衡组成(摩尔)与温度的关系数据本人要做化工原理的课程设计 找不到这个的气液平衡组成关系 铜锈的化学式铜锈形成的化学方程式 湿纸放在酒精灯上烧不着是因为纸是湿的吗 圆珠笔芯的塑料部分是怎么跟金属笔头连接的?有专门的机器吗?还有笔油是怎么加进笔芯里去的? 原子核外M层上比L层少2个电子的原子,其元素符号是 ,原子结构示意图是.核外有2个电子层,带2个单位的负电荷的微粒,其结构示意图是 ,微粒符号是 向过量硝酸银溶液中滴入少量Na2S2O3溶液 的反应方程式 向过量的Na2S2O3溶液钟加入少量硝酸银的方程式 常压条件下乙醇-水溶液的气液平衡数据哪有? 索氏提取法提取咖啡因为什么用95%乙醇而不是更高浓度乙醇?对实验结果将会产生什么影响? 怎么清洗眼镜布?清楚说明下/谢谢我的眼镜布抹久了就脏想清洗下 求 丙酮-水 的气液平衡数据!我用左化工原理的课程设计的~找了好久都找不到 1汞是属于什么 是固态非金属 还是金属.2什么物质可是直接用元素符号表示3为什么离子化合物肯定有金属原子但不一定有金属元素?3 元素的定义我知道 但不知道怎么了解 上面2个最好举例下 眼镜布是用来擦眼镜还是包眼镜? 圆珠笔分为那几个部分例如:笔芯、外壳之类的 请问,700ml95度的酒精要稀释成60度,需要加多少水?如题.有无公式之类的呢? CuSO4溶液与铁粉离子方程式 偏铝酸钠溶液与氯化铵反应的化学方程式 用氢氧化钠改良酸性土壤为什么不对? 不同浓度酒精都有什么用途? 盐酸分别与硫化钠,硫代硫酸钠,铝酸钠,硫酸钠溶液反应的化学方程式? 镁铝锌铁与盐酸硫酸的反应式是什么?一共有8个.请一一列举! 不同浓度酒精都有哪些用途? 某化学实验小组欲探究盐酸、氢氧化钙的化学性质,取8支试管分别用A-H编号后,做如下实验.我知道答案 某化学实验小组欲探究盐酸、氢氧化钙的化学性质,取8支试管分别用A-H编号后,做如下 关于乙醇的折射率!【有效期至2008年10月21日】?thank you!thanks!请问:室温下,纯水与无水乙醇的折光率各为多少?乙醇的水溶液分别为以下浓度时,其折光率各为多少?0.50mol/L 0.55mol/L 将铁粉和铜粉的混合物放入硝酸银溶液中,反应结束后,剩余固体成分是什么?A.肯定有银 B.肯定有铜 C.可能有铁 D.可能有铁和银 在一个棱长为10cm的正方体木材的相对的两个面中掏出一个边长为1cm的正方形小孔,这个图形的表面积和体积是 工业酒精中乙醇浓度是按什么划分的? 常温下,钾、钡、钙、钠+水=()+()及其化学方程式 用棱长为1cm的小正方体对方称边长为10cm的大正方体,共需要小正方体()个 乙醇的折光指数是多少? 水和钾,钙,钠,钡反应的化学式是什么? 硫酸铜加入碳酸钠中和碳酸钠加入硫酸铜中现象一样么都是溶液 向盛有少量氯化钠溶液的试管中滴加硝酸银溶液,生成白色沉淀,继续向试管里滴加氨水,沉淀消失, 钾钙钠钡和溶液反应钾钙钠钡为什么不会与金属溶液反应? 碳酸钙化学式是什么啊? 急,圆珠笔笔油弄到皮沙发上了,怎么清洁 铵钾钠钡钙,除了这5种元素,其余元素都不溶于水,生成沉淀, 为什么不锈钢的焊点会生锈例如不锈钢防盗网 为什么酒精作用于身体神经先兴奋 后压抑或者抑制1.能否改变 就是不断兴奋 或者能够通过加大饮酒量达到效果?2.这个机理(酒精作用于身体神经先兴奋 后压抑或者抑制)是什么卧个槽 全是 划火柴时火柴梗向上火焰会熄灭吗会熄灭吗为什么?是不是它接触不到氧气 不锈钢焊点生锈怎么办
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘