Ver Mensaje Individual
  #1  
Antiguo 28-04-2007
Wellnic Wellnic is offline
Miembro
 
Registrado: mar 2007
Posts: 68
Reputación: 18
Wellnic Va por buen camino
Apagar desde la "pantalla de bienvenida"

Hola
El otro día hice el típico programa de novato para probar los distintos modos de apagar el ordenador:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
Var TokenPriv: TTokenPrivileges;
H: DWord;
HToken: THandle;
Begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
OpenProcessToken(GetCurrentProcess,
TOKEN_ADJUST_PRIVILEGES,HToken);
LookUpPrivilegeValue(NIL, 'SeShutdownPrivilege',
TokenPriv.Privileges[0].Luid);
TokenPriv.PrivilegeCount := 1;
TokenPriv.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
H := 0;
AdjustTokenPrivileges(HToken, FALSE,
TokenPriv, 0, PTokenPrivileges(NIL)^, H);
CloseHandle(HToken);
End;
end;
...
//Mi código:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Gauge1.AddProgress(1); if Gauge1.Progress < Gauge1.MaxValue Then exit;
Case RadioGroup1.ItemIndex Of
0: ExitWindowsEx(EWX_LOGOFF Or EWX_FORCE, 0);
1: ExitWindowsEx(EWX_SHUTDOWN Or EWX_FORCE, 0);
2: ExitWindowsEx(EWX_REBOOT or EWX_FORCE, 0);
3: ExitWindowsEx(EWX_POWEROFF Or EWX_FORCE, 0);
4: SetSystemPowerState(False, True);
end;
Application.Terminate;
end;
Funciona como esperaba, excepto cuando pongo la "pantalla de bienvenida" de Windows, pulsando, por ejemplo, Win+L (observad que he puesto una cuenta atrás, de 5 segundos, para que me dé tiempo), en este caso no se apaga el PC, ni aunque se ejecute ExitWindowsEx(EWX_POWEROFF, FORCE), se limita a cerrar la cuenta. ¿Se puede solucionar esto, es decir, poder apagar, mediante código, aunque esté puesta la "pantalla de bienvenida"?
(Como cosa curiosa, hibernar sí se puede).

Última edición por Wellnic fecha: 30-04-2007 a las 20:29:17.
Responder Con Cita