Desligar windows 98
18/03/2006
0
Por favor, espero a ajuda de vcs.
Abraço
Fabio
function MyExitWindows(RebootParam: Longword): Boolean;
var
TTokenHd: THandle;
TTokenPvg: TTokenPrivileges;
cbtpPrevious: DWORD;
rTTokenPvg: TTokenPrivileges;
pcbtpPreviousRequired: DWORD;
tpResult: Boolean;
const
SE_SHUTDOWN_NAME = ´SeShutdownPrivilege´;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
tpResult := OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, TTokenHd);
if tpResult then
begin
tpResult := LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, TTokenPvg.Privileges[0].Luid);
TTokenPvg.PrivilegeCount := 1;
TTokenPvg.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
cbtpPrevious := SizeOf(rTTokenPvg);
pcbtpPreviousRequired := 0;
if tpResult then
Windows.AdjustTokenPrivileges(TTokenHd, False,TTokenPvg,
cbtpPrevious, rTTokenPvg,pcbtpPreviousRequired);
end;
end;
Result := ExitWindowsEx(RebootParam, 0);
end;
procedure Finalizar;
var
TokenPriv : TTokenPrivileges;
Tamanho : DWord;
HToken : THandle;
begin
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES,HToken);
LookUpPrivilegeValue(NIL, ´SeShutdownPrivilege´, TokenPriv.Privileges[0].Luid);
TokenPriv.PrivilegeCount := 1;
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
Tamanho := 0;
AdjustTokenPrivileges(HToken, FALSE, TokenPriv, 0, PTokenPrivileges(NIL)^, Tamanho);
CloseHandle(HToken);
ExitWindowsEx(EWX_FORCE + EWX_POWEROFF, 0);
application.terminate;
end;
Bacarin
Posts
18/03/2006
Paullsoftware
[b:0fd1b96d3e]declare a unit windows[/b:0fd1b96d3e]
//Desliga ExitWindowsEx(EWX_FORCE,EWX_SHUTDOWN); //Faz logoff ExitWindowsEx(EWX_FORCE,EWX_LOGOFF); //Reinicia ExitWindowsEx(EWX_FORCE,EWX_REBOOT);
mais respondendo a sua pergunta, esse código que uso funciona normal num sistema de lan-house que tenho, já foi testado em Wind2k, Win98 e Win_XP... :lol:
18/03/2006
Kitsystem
O amigo esta com a duvida que não esta funcionando, tb já tive este problema, mas nem tentei muito a fundo em relação ao Win98, mas a pergunta dele tem sentido, ou seja, é melhor ajudar ao colocar que ´para que todo este codigo´, deixe algum com experiencia a area o ajudar
19/03/2006
Kroki
20/03/2006
Paullsoftware
:oops: :oops: :oops:
eu nõa estou esnobando com a dúvida dele, muito pelo contrário. Se dei essa impressão a você [b:e1f8a2a618]bacarin[/b:e1f8a2a618] desculpe-me não tive essa intenção! mais o código que citei para vc funciona perfeitamente! :wink:
Clique aqui para fazer login e interagir na Comunidade :)