14/02/2006

comando para reinicializar computador

Eu usava o seguinte comando para reinicializar o computador.
ExitWindowsEx(EWX_REBOOT, 0);

Funciona bem em máquina win95 e win98.

Só que na minha empresa tenho máquinas com winxp também e este comando não dá certo. Acredito que também não deva funcionar para o win2000.

Existe um comando que funcione para todos os windows???
Ou devo usar um comando para cada tipo de windows???
Como posso resolver o problema....

Obrigado.


Briciosm

Respostas

14/02/2006

Paullsoftware

eu uso essa função que encontrei aqui mesmo no fórum e funciona comigo normalmente...

function SairdoWindows(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&93;.Luid); 
TTokenPvg.PrivilegeCount := 1; 
TTokenPvg.Privileges&91;0&93;.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;


exemplo do uso:
 SairdoWindows(EWX_FORCE+EWX_SHUTDOWN);


espero ter ajudado! :wink:


Responder Citar