Newsgroup: it.comp.programmare.win32
Titolo: Chiudere il PC

Salve a tutti.
Esiste un modo per richiamare "Start->Chiudi Sessione->Arresta il sistema"
da un programma? In pratica vorrei realizzare un programma che, allo
scattare di un certo evento, arresti automaticamente il sistema.
Mi va bene codice sia in C++ che in Visual Basic.
Tra l'altro dovrebbe essere possibile fare una cosa simile anche da DOS,
richiamando RunDLL32... qualcuno sà come si fà?
P.S.: Se non potete aiutarmi con del codice per spegnere il PC, mi va bene
anche del codice per interrompere tutte le connessioni ad internet.
Tnx&Byez!

 richiamando RunDLL32... qualcuno sà come si fà?
Non l'ho mai usata, ma sembrerebbe proprio che l'API giusta sia
InitiateSystemShutdown.
Kiuhnm

 scattare di un certo evento, arresti automaticamente il sistema.
Per arrestare o riavviare il PC c'č (Visual C++):
BOOL ExitWindowsEx(
  UINT uFlags,       // shutdown operation
  DWORD dwReserved   // reserved
);
Maggiori info le trovi in MSDN...
--
Virtual (24, ~137, MI)
e-mail: **
vir...@lombardiacom.it
**

 DOS, richiamando RunDLL32... qualcuno sà come si fà?
rundll32 user,ExitWindows
rundll32 user,#7
--
-=[]=- 
ian...@libero.it
 -=[]=-

 Esiste un modo per richiamare "Start->Chiudi Sessione->Arresta il sistema"
WSH
E' un pelino "acrobatico" perche' devi usare il Sendkeys..che in
quanto ad affidibilita'.....
'Inizio
set objshell = wscript.CreateObject("Shell.Application")
objshell.ShutdownWindows
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 200
WshShell.SendKeys "a" 'invia a di arresta sistema
WScript.Sleep 100
WshShell.SendKeys "~"
'Fine
Copia incolla su notepad e salva con estensione .vbs
tutti i file (*.*)  poi ci clicchi sopra. (per esempio Spegni.vbs)
oppure
C:\WINDOWS\RUNDLL32.EXE shell32,SHExitWindowsEx 1
--
Fosco

 rundll32 user,#7
WinExec("rundll32 user,ExitWindows", 0);
WinExec("rundll32 user,#7", 0);
Kiuhnm

 quanto ad affidibilita'.....
In effetti preferisco di gran lunga C++ o RunDLL32. Tnx cmq!
Byez! ;-D

Grazie ragazzi... molto chiaro. Credo che userò C++.
Mi spieghereste però un'ultima cosa, dato che sono 100% Niubba di DOS e di
Win32 Shell in genere?
Che vuol dire la 2a chiamata a RunDLL32 (quella con "#7")?
spiegazione suppongo difficile...
Potete almeno consigliarmi qualche book (possibilmente online+gratuito)
sulla Shell di Win32? Qualcosa che tratti di chiamate a programmi tipo
RunDLL e delle principali diciture della command line che viene passata ai
programmi SDI e MDI (per il momento conosco soltanto le diciture Open e
Print)

, 
agqu...@libero.it
 says...

Occhio pero' che con Win2000 (e quindi anche XP) la cosa e' leggermente 
diversa. Scaricati i sorgenti di questa piccola utility che avevo 
scritto tempo fa, sono per C+API, ma non dovresti avere difficoltà a 
convertire il tutto per altri linguaggi:
http://www.john.findlay1.btinternet.co.uk/winprog/timeoff.zip
Ciao,
Luca.

 Che vuol dire la 2a chiamata a RunDLL32 (quella con "#7")?
Che importi la funzione della dll non per nome, ma per numero. Le dll
esportano le proprie funzioni per numero e/o per nome. ExitWindows è
la funzione esportata con il numero 7.
Saluti,
zello

 Che importi la funzione della dll non per nome, ma per numero. Le dll
Chiamato "ordinale" :-)
Kiuhnm

 Che vuol dire la 2a chiamata a RunDLL32 (quella con "#7")?
fai il conto come ti hanno gia detto che c'e'  anche
il "suspend" oltre il normale standby
Win98/ME
RUNDLL32 SHELL32.DLL,SHExitWindowsEx n
Dove n puo' essere qualsiasi combinazione o somma di :
0    Logoff
1    Shutdown
2    Reboot
4    Force
8    Poweroff (if supported by the hardware)
NT
RUNDLL32 USER32.DLL,ExitWindowsEx
RUNDLL32 USER32.DLL,ExitWindowsEx
Logoff (most systems require the command to be called twice before logging off)
--
Fosco

 
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!

Maya ha scritto:
argh. Messaggio uscito per sbaglio
