Codigo p/ desligar o windows XP

11/02/2003

1

Alguem tem o codigo p/ desligar o windows XP ????
Aquele q funciona no 98 nao funciona no XP...

tks.


Responder

Posts

11/02/2003

Kiguti

Eu não sei como fazer isto atravez do código, a não ser que fosse o win 9x, mas existe um componente que possui varias opções como reiniciar o computador, desligar, efetuar logoff, tem como deixa a máquina hibernando... existe todas essas opções.... e funciona pra qquer windows.
eh o componente abfShutDown da palheta ABF non-visual...
e este componente é fácil de se achar na internet.
Espero ter ajudado!!!

Kiguti
:roll:


Responder

11/02/2003

Anonymous

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].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;



Chmada da função


SairDoWindows(EWX_SHUTDOWN or EWX_POWEROFF);
SairDoWindows(EWX_REBOOT );



EWX_LOGOFF

Fecha todos os processos que funcionam no contexto da segurança do processo que se chamou
Função de ExitWindowsEx. Então registra o usuário fora.


EWX_POWEROFF

Fecha o sistema e desliga a força.
O sistema deve suportar a característica do POWEROF.
Windows NT/2000/XP:
O processo da chamada deve ter o privilégio de SE_SHUTDOWN_NAME.


EWX_REBOOT

Fecha o sistema e reinicia
Windows NT/2000/XP: O processo da chamada deve ter o privilégio de SE_SHUTDOWN_NAME.


EWX_SHUTDOWN

Fecha o sistema a um ponto em que é seguro desligar a força.
Todos os amortecedores da lima foram nivelados ao disco, e todos os processos running pararam.
Se o sistema suportar a característica do POWEROF,

Windows NT/2000/XP: O processo da chamada deve ter o privilégio de SE_SHUTDOWN_NAME.


EWX_FORCE

Força processos para terminar. Quando esta bandeira for ajustada,
o sistema não emite as mensagens de WM_QUERYENDSESSION e de WM_ENDSESSION.
Isto pode fazer com que as aplicações percam dados.
Conseqüentemente, você deve somente usar esta bandeira em uma emergência.


EWX_FORCEIFHUNG

Windows 2000/XP: Força processos para terminar se não responderem ao
Mensagem de WM_QUERYENDSESSION ou de WM_ENDSESSION. Esta bandeira é ignorada se EWX_FORCE for usado.


Responder