Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-05-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 22
mrmanuel Va por buen camino
Comando InitiateSystemShutDown?

Hola todos

¿alguien me podría explicar como puedo utilizar el comando InitiateSystemShutDown?

Lo que pretendo hacer es apagar, desde mi ordenador, un Pc perteneciente a mi misma red.

La ayuda de delphi dice:


Código:
  InitiateSystemShutdown(
       LPTSTR lpMachineName,	// address of name of computer to shut down
       LPTSTR lpMessage,	// address of message to display in dialog box
       DWORD dwTimeout,	// time to display dialog box
       BOOL bForceAppsClosed,	// force applications with unsaved changes flag
       BOOL bRebootAfterShutdown 	// reboot flag
       );

he probado a poner en el campo: "LPTSTR lpMachineName", el nombre del equipo y la Ip. Y no consigo que funcione.
__________________
Un Saludo a todos/as
Responder Con Cita
  #2  
Antiguo 04-05-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Prestaste atencion a este breve comentario:
Cita:
To shut down the local computer, the calling process must have the SE_SHUTDOWN_NAME privilege. To shut down a remote computer, the calling process must have the SE_REMOTE_SHUTDOWN_NAME privilege on the remote computer. By default, users can enable the SE_SHUTDOWN_NAME privilege on the computer they are logged onto, and administrators can enable the SE_REMOTE_SHUTDOWN_NAME privilege on remote computers.
Common failures include an invalid or inaccessible computer name or insufficient privilege.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 05-05-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 22
mrmanuel Va por buen camino
Si ya lo dijo mi abuela:

"dejate de tonterias de ordenadores y parches y ponte a estudiar ingles, que te será mucho mas fructifero".

¿Como puedo controlar los provilegios en el pc que quiero apagar?


Saludos y gracias.
__________________
Un Saludo a todos/as

Última edición por mrmanuel fecha: 11-05-2004 a las 11:19:09.
Responder Con Cita
  #4  
Antiguo 11-05-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 22
mrmanuel Va por buen camino
Hola nuevamente.

He estado mirando la ayuda de Delphi, y en la version 7 no dice nada, en la 5 dice lo que ha indicado el compañero --> delphi.com.ar.


La verdad, he estado haciendo distintas pruebas y no consigo nada.

las pruebas las he realizado en WinMe, aunque tendría que funcionar en 98, 2000 y Xp.

Gracias
__________________
Un Saludo a todos/as
Responder Con Cita
  #5  
Antiguo 11-05-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
En un Win9x supongo
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 11-05-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por delphi.com.ar
En un Win9x supongo
que debe tener que estar configurado para "administración remota". (Panel de Control \ Contraseñas \ Administración Remota)

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #7  
Antiguo 11-05-2004
aram2r aram2r is offline
Miembro
 
Registrado: ene 2004
Posts: 81
Poder: 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
  #8  
Antiguo 13-05-2004
mrmanuel mrmanuel is offline
Miembro
 
Registrado: may 2003
Posts: 135
Poder: 22
mrmanuel Va por buen camino
Hola

He estado probando el código de "aram2r" y se aplica al PC desde el que se ejecuta. ¿Como lo haces para apagar uno en la red?.

He estado probando en Win Me y no me funciona correctamente. lo que hace es reinciar la sesión.

de todas formas lo pruebo en otras plataformas.

gracias
__________________
Un Saludo a todos/as
Responder Con Cita
  #9  
Antiguo 14-05-2004
aram2r aram2r is offline
Miembro
 
Registrado: ene 2004
Posts: 81
Poder: 21
aram2r Va por buen camino
Wink

Hola mrmanuel...ese no es el codigo q utilizo para apagarlos en red...para la red utilizo el initiateSystemShutDown()...conforme tu lo tienes escrito en el primer mensaje:
Código Delphi [-]
InitiateSystemShutdown(
       LPTSTR lpMachineName,// address of name of computer to shut down
       LPTSTR lpMessage,// address of message to display in dialog box
       DWORD dwTimeout,// time to display dialog box
       BOOL bForceAppsClosed,// force applications with unsaved changes flag
       BOOL bRebootAfterShutdown// reboot flag
       );

Por ejemplo:

Código Delphi [-]
InitiateSystemShutdown(
       192.168.1.2,
       '',
       0,
       True,
       False
       );

Esto a mi me funciona....pero mi usuario es administrador de dominio..no he probado si ejecutando el programa con un usuario restringido funcionaria
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


La franja horaria es GMT +2. Ahora son las 03:17:11.


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