Como dar shutdown em Windows 2000,NT e XP ??
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 ....
ñ 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
Curtidas 0
Respostas
Anonymous
13/02/2003
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
Ateh mais,
Eduardo Alves
GOSTEI 0
Anonymous
13/02/2003
tipo, to presisando dessa função ....
bem, fico esperando ... hehehe ....
mas valeu ....
bem, fico esperando ... hehehe ....
mas valeu ....
GOSTEI 0
Anonymous
13/02/2003
Errei, naum eh deslogado e sim desligado .... um shutdown de verdade !
valeu a atenção ....
valeu a atenção ....
GOSTEI 0
Anonymous
13/02/2003
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
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
GOSTEI 0
Anonymous
13/02/2003
[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)
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)
GOSTEI 0
Anonymous
13/02/2003
kra, valeu, me ajudou mto, mas mttooooo mesmo ....
[]´s .....
[]´s .....
GOSTEI 0