Ver Mensaje Individual
  #13  
Antiguo 11-05-2004
aram2r aram2r is offline
Miembro
 
Registrado: ene 2004
Posts: 81
Reputación: 21
aram2r Va por buen camino
Los pc´s q apago desde delphi si son modernos con fuente y placa ATX...pero al apagarlos con ExitWindowsEx() o con InitiateSystemShutdown()...se kedan en la pantallita de 'AHORA PUEDE APAGAR SU EQUIPO....etc'
A vosotros no os pasa?????

Para apagarlos en red no utilizo ExitWindowsEx() utilizo InitiateSystemShutdown() y el unico problema q tengo es ese...q no se apagan del todo se kedan en la pantallita de marras!!!!


El codigo q utilizo es el siguiente:

Código Delphi [-]
function Tform1.CierraWindows(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;


procedure TForm1.Button1Click(Sender: TObject);
begin
  CierraWindows(EWX_POWEROFF);
end;

Tambien he probado EWX_SHUTDOWN, EWX_EXFORCE..etc..etc


Gracias.

Última edición por aram2r fecha: 14-05-2004 a las 09:01:55.
Responder Con Cita