Como dar shutdown em Windows 2000,NT e XP ??

13/02/2003

0

a função ExitWindowsEx(EWX_SHUTDOWN,1) ;
ñ funciona em windows 2000,NT e XP ....
a unica q funciona eh ExitWindowsEx(EWX_FORCE,1) ;
mas eu presiso q o pc seja realmente deslogado ....



provavelmente eh algo simples, mas naum sei ....


valeu a atenção ....


Anonymous

Anonymous

Responder

Posts

13/02/2003

Anonymous

Seguinte, esses tempos eu tb passei por esse problema mas achei uma função na internet onde consegui fazer o desligamento. O problema eh que eu não estou em casa agora(e eh lah que estão os fontes), mas quando eu chegar em casa(caso ninguem tenha respondido ainda..) eu respondo a tua questão.

Ateh mais,

Eduardo Alves


Responder

13/02/2003

Anonymous

tipo, to presisando dessa função ....


bem, fico esperando ... hehehe ....



mas valeu ....


Responder

13/02/2003

Anonymous

Errei, naum eh deslogado e sim desligado .... um shutdown de verdade !





valeu a atenção ....


Responder

13/02/2003

Anonymous

Bom, cheguei em casa, agora vamos ver no que posso te ajudar...

Essa função comigo funcionou. Ve se te ajuda:

procedure DesligaMicro;
var
hToken : THandle;
tkp : TOKEN_PRIVILEGES;
zero : DWord;
begin
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, ´SeShutdownPrivilege´, tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
zero := 0;
AdjustTokenPrivileges(htoken, FALSE, tkp ,zero ,nil, zero);
ExitWindowsEx(EWX_POWEROFF, 0)
end;


Variações dentro do ExitWindowsEx:

{
EWX_LOGOFF // Dá ´logoff´ no usuário atual
EWX_SHUTDOWN // ´Shutdown´ padrão do sistema
EWX_REBOOT // Dá ´reboot´ no equipamento
EWX_FORCE // Força o término dos processos
EWX_POWEROFF // Desliga o equipamento
EWX_FORCEIFHUNG // Não sei o que faz...
}


Bom, acho que eh isso. Espero ter ajudado.

[]´s

Eduardo Alves


Responder

13/02/2003

Anonymous

[quote:36e4f4fc37=´Eduardo Alves´]Bom, cheguei em casa, agora vamos ver no que posso te ajudar...

Essa função comigo funcionou. Ve se te ajuda:

procedure DesligaMicro;
var
hToken : THandle;
tkp : TOKEN_PRIVILEGES;
zero : DWord;
begin
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken);
LookupPrivilegeValue(nil, ´SeShutdownPrivilege´, tkp.Privileges[0].Luid);
tkp.PrivilegeCount := 1;
tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
zero := 0;
AdjustTokenPrivileges(htoken, FALSE, tkp ,zero ,nil, zero);
ExitWindowsEx(EWX_POWEROFF, 0)
end;


Variações dentro do ExitWindowsEx:

{
EWX_LOGOFF // Dá ´logoff´ no usuário atual
EWX_SHUTDOWN // ´Shutdown´ padrão do sistema
EWX_REBOOT // Dá ´reboot´ no equipamento
EWX_FORCE // Força o término dos processos
EWX_POWEROFF // Desliga o equipamento
EWX_FORCEIFHUNG // Não sei o que faz...
}


Bom, acho que eh isso. Espero ter ajudado.

[]´s

Eduardo Alves[/quote:36e4f4fc37]

Ah, eh possível tb fazer combinações na função ExitWindowsEx, combinaçoes do tipo and e or. Por exemplo,

ExitWindowsEx(EWX_POWEROFF or EWX_LOGOFF, 0)


Responder

19/02/2003

Anonymous

kra, valeu, me ajudou mto, mas mttooooo mesmo ....








[]´s .....


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar