如何实现win98下关机?

bruin74 2006-07-06 03:42:09
我做了个batch file 应用程序,应用程序里有ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE or EWX_POWEROFF,0)语句,但关不了机!难道一定要做成窗体应用程序吗?

...全文
384 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
widelyocean 2006-12-19
  • 打赏
  • 举报
回复
mark一下
lzg530 2006-10-24
  • 打赏
  • 举报
回复
delphi8 里面有关adapid.dll的设置权限函数如LookupPrivilegeValue,AdjustTokenPrivileges不能直接调用,请问zhou13() 您这个程序是在哪个版本下code的?
kye_jufei 2006-08-25
  • 打赏
  • 举报
回复
簡單
MSN:kye_jufei@hotmail.com
bruin74 2006-08-23
  • 打赏
  • 举报
回复
UP下下,还没解决!
bruin74 2006-08-09
  • 打赏
  • 举报
回复
zhou13()和tanxj(明剑),在delphi下,如何以sw_hide模式运行rundll32.exe user.exe,exitwindowsexec?
tanxj 2006-08-06
  • 打赏
  • 举报
回复
zhou13() ( )
的方法就可以实现了!
bruin74 2006-08-05
  • 打赏
  • 举报
回复
楼上的方法好象不行哦!
zhou13 2006-07-20
  • 打赏
  • 举报
回复
试试运行这个
rundll32.exe user.exe,exitwindowsexec

SW_hide运行哦,应该可以了吧。。。。。。
zhou13 2006-07-20
  • 打赏
  • 举报
回复
哦,看错了
bruin74 2006-07-17
  • 打赏
  • 举报
回复
上楼上楼的兄弟,咱也知道在2000下要提升权限,咱也知道ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0); 这条语句能关机,现在关键的是把这条语句写入CONSOLE应用程序无法关机,而写入窗体应用程序就可以。

继续求解!
HALOcn 2006-07-12
  • 打赏
  • 举报
回复
up,``~
zhou13 2006-07-12
  • 打赏
  • 举报
回复
function ShutDown :boolean;
const
ADJUST_PRIV = TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES;
SHTDWN_PRIV = 'SeShutdownPrivilege';
PRIV_SIZE = sizeOf(TTokenPrivileges);
Len: DWORD;
TokenPriv, Dummy: TTokenPrivileges;
Token: THandle;
Error: integer;
OSVersionInfo: TOSVERSIONINFO;
begin
OSVersionInfo.dwOSVersionInfoSize := sizeof(OSVERSIONINFO);
GetVersionEx(OSVersionInfo);
// 如果是Win NT/2000操作系统
if (OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) then
begin
error:=0;
// 设置特权
if not OpenProcessToken(GetCurrentProcess(), ADJUST_PRIV, Token) then
Error := Error or 4;
if not LookupPrivilegeValue(nil, SHTDWN_PRIV,TokenPriv.Privileges[0].Luid) then
Error := Error or 8;
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
TokenPriv.PrivilegeCount := 1; // One privilege to set
if not AdjustTokenPrivileges(Token, false, TokenPriv, PRIV_SIZE,Dummy, Len) then
Error:=Error or 16;
ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0);
Result := (Error=0);
end else
ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE, 0);
end; {ShutDown}

这一个过程,98 2K xp都能关机!!!!!
lonoaer 2006-07-06
  • 打赏
  • 举报
回复
98下面没有试过,2K下面论坛上多去了
bruin74 2006-07-06
  • 打赏
  • 举报
回复
O,错了,是写成CONSOLE应用程序!


program lock;

{$APPTYPE CONSOLE}

uses
SysUtils,
Windows;

var
i : integer;

begin
i:=0;
while true do
begin
if i>2000 then ExitWindowsEx(EWX_SHUTDOWN or EWX_FORCE or EWX_POWEROFF,0)
else i:=i+1
end;
end.


基本就是这样的!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧