Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Apagar, reiniciar y cerrar sesión

Hola, me gustaría saber el código para apagar, reiniciar y cerrar sesión de un ordenador en windows. Gracias.
Responder Con Cita
  #2  
Antiguo 05-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Codigo de seoane:
Código Delphi [-]
 //Función que permite apagar la computadora o desloguearse
function ShutDownWindows(Flag: word): Boolean;
  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;
    Result := ExitWindowsEx(Flag, 0);
 end;
Procedimiento:
Código Delphi [-]
procedure TFMonitor.FormDestroy(Sender: TObject);
begin
  // OJO Usar o uno u otro procedimiento
 
    // con esto se cierra windows
   ShutDownWindows(EWX_POWEROFF);

    // con esto se cierra la sesion
   // ShutDownWindows(EWX_LOGOFF);

end;
Verdad, Seoane es un Maestro.
Saludos
Responder Con Cita
  #3  
Antiguo 05-06-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo recordar que es esto, aunque hace falta que algún experto/maestro lo dé por bueno

Cita:
ShutDownWindows(EWX_POWEROFF); // apagar windows
ShutDownWindows(EWX_REBOOT); // reiniciar windows

ShutDownWindows(EWX_POWEROFF or EWX_FORCE); // forzar apagado
ShutDownWindows(EWX_REBOOT or EWX_FORCE); // forzar reiniciado

shutdownwindows(EWX_LOGOFF); // cerrar session

Edito: No había visto tu mensaje, Caral.
Responder Con Cita
  #4  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
thank you very much ;-)
Responder Con Cita
  #5  
Antiguo 05-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola Casimiro
Aqui estoy, mas rapido que en el oeste.
Pero, reconozco que desconocia la manera de reiniciar, ves, importante tu aparte.
Saludos
Responder Con Cita
  #6  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Vale la pruebo mañana y os cuento gracias a todos, chao!
Responder Con Cita
  #7  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
la funcion ShutDownWindows no la reconoce, necesito una uses o algo?
Responder Con Cita
  #8  
Antiguo 05-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por jorgegetafe
la funcion ShutDownWindows no la reconoce, necesito una uses o algo?
El código de la función ShutDownWindows te lo escribió Caral
Responder Con Cita
  #9  
Antiguo 05-06-2007
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Yo no escribi el codigo, hey que lo he dicho en mi primer mensaje, seoane.
Cita:
Escrito por mi:
Codigo de seoane:
Si hay que echarle la culpa a alguien no es a mi.
Que va seoane, no soy capaz de hacer cosas tan buenas, este es todo tuyo, yo solo copie y pegue.
Saludos
Responder Con Cita
  #10  
Antiguo 05-06-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Bueno muchachos... tampoco es que esten peliandose por un copyrigth ¿Se convertirá esto en un segundo reconocimiento del trabajo ajeno?

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #11  
Antiguo 05-06-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Que seoane me desmienta, pero su intervención no fue para reclamar autoría- cosa que ya Caral había dejado en claro -sino para manifestar su extrañeza ante el comentario

Cita:
Empezado por jorgegetafe
la funcion ShutDownWindows no la reconoce, necesito una uses o algo?
pues, siendo que Caral acababa de escribirla aquí, es por demás raro que se pregunte eso, ¿no creen?

// Saludos
Responder Con Cita
  #12  
Antiguo 05-06-2007
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
me perdío
Responder Con Cita
  #13  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Utilizando la función que me habeis dado me salte este error:

"statement expectec, but expression of type 'longbool found, en la siguiente linea

Código Delphi [-]
OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES,HToken);

y en esta otra

Código Delphi [-]
TokenPriv.Privileges[0].Luid);

y en esta

Código Delphi [-]
CloseHandle(HToken);

Para acabar me dice que result no esta definido.

A ver si me podeis ayudar porque no me entero de nada del codigo.
Responder Con Cita
  #14  
Antiguo 05-06-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
La función que puso Caral debería de funcionar, pero aquí te dejo una mas genérica, que seguro que funciona:
Código Delphi [-]
function EnablePrivilege(PrivilegeName: PChar; Enable: Boolean): Boolean;
var
  hToken: THandle;
  Tp: TOKEN_PRIVILEGES;
  Luid: TLargeInteger;
begin
  Result:= FALSE;
  if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES or
    TOKEN_QUERY or TOKEN_READ, hToken) then
    if LookupPrivilegeValue(nil,PrivilegeName,Luid) then
    begin
      Tp.PrivilegeCount:= 1;
      Tp.Privileges[0].Luid:= Luid;
      if Enable then
        Tp.Privileges[0].Attributes:= SE_PRIVILEGE_ENABLED
      else
        Tp.Privileges[0].Attributes:= 0;
      Result:= AdjustTokenPrivileges(hToken,FALSE,Tp,0,nil,PDWORD(nil)^);
      CloseHandle(hToken);
    end;
end;

Ahora para apagar:
Código Delphi [-]
// Elevamos nuestros privilegios
EnablePrivilege('SeShutdownPrivilege',TRUE);
// Y Apagamos
ExitWindowsEx(EWX_POWEROFF, 0);
Responder Con Cita
  #15  
Antiguo 05-06-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Delphius
Bueno muchachos... tampoco es que esten peliandose por un copyrigth ¿Se convertirá esto en un segundo reconocimiento del trabajo ajeno?
¡Aquí tiran con bala! ¡Cuidado!
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #16  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Gracias season, ese código si que me funciona.

¿Y para reiniciar y cerrar sesión?

gracias.
Responder Con Cita
  #17  
Antiguo 05-06-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Si revisas la ayuda de la función "ExitWindowsEx" verás que existen otras constantes a parte de "EWX_POWEROFF" que puedes utilizar.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #18  
Antiguo 05-06-2007
Avatar de jorgegetafe
jorgegetafe jorgegetafe is offline
Miembro
 
Registrado: dic 2006
Posts: 238
Poder: 18
jorgegetafe Va por buen camino
Cita:
Empezado por dec
Hola,

Si revisas la ayuda de la función "ExitWindowsEx" verás que existen otras constantes a parte de "EWX_POWEROFF" que puedes utilizar.
Gracias mirare en ayuda.
Responder Con Cita
  #19  
Antiguo 05-06-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jorgegetafe
Utilizando la función que me habeis dado me salte este error:

"statement expectec, but expression of type 'longbool found, en la siguiente linea
Jorge, esto se debe a lo mismo que te pasó en el otro hilo. Tienes desactivada la opción de "Extended Syntax"

// Saludos
Responder Con Cita
  #20  
Antiguo 05-06-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi
me perdío
¿Qué te perdió?

// Saludos
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Cerrar aplicación al apagar el sistema MDSato API de Windows 17 08-11-2006 23:08:30
cerrar sesión en aplicación jano Varios 6 24-11-2005 17:30:25
Apagar y reiniciar windos salvanano API de Windows 6 14-10-2005 17:50:48
Como reiniciar (cerrar y volver a abrir) mi propio programa?? AFilth Varios 8 11-08-2005 08:20:39
Cerrar sesión y Reiniciar la PC barrauda API de Windows 4 04-07-2005 15:44:27


La franja horaria es GMT +2. Ahora son las 12:22:50.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi