Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > API de Windows
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 04/05/2004
mrmanuel mrmanuel is offline
Miembro
 
Join Date: May 2003
Posts: 135
Poder: 24
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:


Code:
  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
Reply With Quote
  #2  
Old 04/05/2004
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
Prestaste atencion a este breve comentario:
Quote:
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.
Reply With Quote
  #3  
Old 05/05/2004
mrmanuel mrmanuel is offline
Miembro
 
Join Date: May 2003
Posts: 135
Poder: 24
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

Last edited by mrmanuel : 11/05/2004 at 11:19.
Reply With Quote
  #4  
Old 11/05/2004
mrmanuel mrmanuel is offline
Miembro
 
Join Date: May 2003
Posts: 135
Poder: 24
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
Reply With Quote
  #5  
Old 11/05/2004
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
En un Win9x supongo
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Reply With Quote
  #6  
Old 11/05/2004
delphi.com.ar's Avatar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Join Date: May 2003
Location: Buenos Aires, Argentina *
Posts: 5,964
Poder: 29
delphi.com.ar Va camino a la fama
Quote:
Originally Posted by 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.
Reply With Quote
  #7  
Old 11/05/2004
aram2r aram2r is offline
Miembro
 
Join Date: Jan 2004
Posts: 81
Poder: 23
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.

Last edited by aram2r : 14/05/2004 at 09:01.
Reply With Quote
  #8  
Old 13/05/2004
mrmanuel mrmanuel is offline
Miembro
 
Join Date: May 2003
Posts: 135
Poder: 24
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
Reply With Quote
  #9  
Old 14/05/2004
aram2r aram2r is offline
Miembro
 
Join Date: Jan 2004
Posts: 81
Poder: 23
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
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 04:49.


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