Newsgroup: it.comp.lang.delphi
Titolo: Spegnere windows

Ho realizzato un prog per scaricare da ftp, adesso vorrei aggiungere la
funzione che spegne il pc quando finisce.
Come posso fare?
Qualcuno sa la procedura?(p.s. dovrebbe funzionare sotto win98 me 2000 e xp)
Grazie 1000 Ciro.

 ha scritto nel messaggio:


Dai un' occhio alla documentazione di ExitWindowsEx().
Su Windows con Kernel NT è necessario disporre di particolari privilegi. Dai
un' occhio ad AdjustTokenPrivileges().
--
- Carlo -
"Imparare senza riflettere o riflettere senza imparare non vi porta alla
buona comprensione" Confucio

Cerca in Torry.net il componente WinReboot che fa shutdown, reboot,
standby
se non lo trovi dimmelo che te lo posto
Gianluca
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:YUakb.307318$R32.10...@news2.tin.it...

function TForm1.MyExitWindows(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
    MyExitWindows(EWX_POWEROFF);
end;
end.
// Parameters for MyExitWindows()
EWX_LOGOFF
Shuts down all processes running in the security context of the process that
called the
ExitWindowsEx function. Then it logs the user off.
Alle Prozesse des Benutzers werden beendet, danach wird der Benutzer
abgemeldet.
EWX_POWEROFF
Shuts down the system and turns off the power.
The system must support the power-off feature.
Windows NT/2000/XP:
The calling process must have the SE_SHUTDOWN_NAME privilege.
Fährt Windows herunter und setzt den Computer in den StandBy-Modus,
sofern von der Hardware unterstützt.
EWX_REBOOT
Shuts down the system and then restarts the system.
Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME
privilege.
Fährt Windows herunter und startet es neu.
EWX_SHUTDOWN
Shuts down the system to a point at which it is safe to turn off the power.
All file buffers have been flushed to disk, and all running processes have
stopped.
If the system supports the power-off feature, the power is also turned off.
Windows NT/2000/XP: The calling process must have the SE_SHUTDOWN_NAME
privilege.
Fährt Windows herunter.
EWX_FORCE
Forces processes to terminate. When this flag is set,
the system does not send the WM_QUERYENDSESSION and WM_ENDSESSION messages.
This can cause the applications to lose data.
Therefore, you should only use this flag in an emergency.
Die aktiven Prozesse werden zwangsweise und ohne Rückfrage beendet.
EWX_FORCEIFHUNG
Windows 2000/XP: Forces processes to terminate if they do not respond to the
WM_QUERYENDSESSION or WM_ENDSESSION message. This flag is ignored if
EWX_FORCE is used.
Windows 2000/XP: Die aktiven Prozesse werden aufgefordert, sich selbst zu
beenden und
müssen dies bestätigen. Reagieren sie nicht, werden sie zwangsweise beendet.

si per favore postamelo
A me serve per win98