DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: qwe0987654321
今日帖子: 5
在线用户: 14
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 tjh33sj (kaill) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 11:52:55
标题:
关于关机的问题 浏览:962
加入我的收藏
楼主:     我在winxp系统下面实现关机功能,语句为:exitwindowsex(1,0);然而执行以后,只是闪了一下窗口,并未实现关机功能。用exitwindowsex(4,0);实现系统注销却没有一点问题,请教各位这是什么原因,或者是我用错了。希望给一个真确的方法给我 。
----------------------------------------------
-
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 12:28:57
1楼: windows2000和windows xp中关机不是这么简单的,要先取得系统管理权限!
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 tjh33sj (kaill) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 12:32:13
2楼: 那如何取的系统的权限呢?
----------------------------------------------
-
作者:
男 hbqckzj (醉里寻欢) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 12:37:31
3楼: 以下是完整代码,照抄就行:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);

private
{ Private declarations }
procedure AdjustToken;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.AdjustToken();
var
hdlProcessHandle : Cardinal;
hdlTokenHandle : Cardinal;
tmpLuid : Int64;
tkpPrivilegeCount : Int64;
tkp : TOKEN_PRIVILEGES;
tkpNewButIgnored : TOKEN_PRIVILEGES;
lBufferNeeded : Cardinal;
Privilege : array[0..0] of _LUID_AND_ATTRIBUTES;
begin
hdlProcessHandle := GetCurrentProcess;
OpenProcessToken(hdlProcessHandle,
(TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY),
hdlTokenHandle);

// Get the LUID for shutdown privilege.
LookupPrivilegeValue(', 'SeShutdownPrivilege', tmpLuid);
Privilege[0].Luid := tmpLuid;
Privilege[0].Attributes := SE_PRIVILEGE_ENABLED;
tkp.PrivilegeCount := 1; // One privilege to set
tkp.Privileges[0] := Privilege[0];
// Enable the shutdown privilege in the access token of this
// process.
AdjustTokenPrivileges(hdlTokenHandle,
False,
tkp,
Sizeof(tkpNewButIgnored),
tkpNewButIgnored,
lBufferNeeded);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
AdjustToken;
ExitWindowsEx((EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), $FFFF);
end;

end.
----------------------------------------------
秋风清 秋月明,几上闲琴黯生尘。
夜来忽忆少年事,陌上柳绿草青青。
相逢一笑言未语,携手相看自倾心。
二十二载云烟里,云含风韵烟含情。
风尘渺落风霜浸,但闻长空雁长鸣。
姿容如花颜如玉,只在平生梦里寻。
秋风清 秋月明,秋灯秋雨愁煞人。
天涯路远人何在,午夜梦回空扰惊。
作者:
男 tjh33sj (kaill) ★☆☆☆☆ -
盒子活跃会员
2004/3/17 15:20:12
4楼: 单独使用时还能够实现,但加在程序段中就出现:
[Error] Unit1.pas(1108): Ambiguous overloaded call to 'AdjustTokenPrivileges'

[Fatal Error] Project1.dpr(7): Could not compile used unit 'Unit1.pas'
这是那里错了哦
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行70.3125毫秒 RSS