Newsgroup: it.comp.lang.visual-basic
Titolo: ExitWindowsEx....cosa non va?

Ciao a tutti nel ng!
Come da oggetto cerco informazioni all'api ExitWindowsEx. Io ho provato ad
usare Shutdown e Reboot e non funzionano, ma LOGOFF si....perchč?
Come faccio a farle funzionare tutte? Ho winXP.
Grazie a tutti
Giuse

 Come faccio a farle funzionare tutte? Ho winXP.
Come "suggeriva" emmexx, nell'ultima settimana se ne č parlato almeno 3
volte, in tre discussioni diverse.
Comunque ti voglio rincuorare: finora nessuno ha scritto si esserci
riuscito. se tu lo farai facci sapere.
Stavolta te la sei proprio cercata...
Ciao, SK
--
La pasienzia non č mai troppo (Totň)
<><><>
Esistono 10 tipi di persone: chi conosce il binario e chi no

 Ciao, SK
Ciao, Giuse

 Certo, ho postato apposta.....
La stessa domanda fatta cinque giorni fa e rinnovata altre due volte in
ques'arco di tempo non ha trovato soluzione. Sono sicuro che se qualcuno
avesse saputo la risposta l'avrebbe scritta, magari non dopo un mese, ma
dopo due giorni si. Per questo si aspetta un poco prima di riproporre lo
stesso quesito.
Se poi avessi letto le risposte al terzo post sull'argomento, avresti
intuito che non era il caso di fare per l'ennesima volta la stessa domanda.
comunque libero di postare quello che vuoi, ma anche di prenderti le
risposte, in tema, più o meno diplomatiche.
Devo comunque ammettere che è una giornata nera, ma ti assicuro che la
risposta rimane la stessa: non ci si riesce, al 30/11/2003 (dal 30 ad oggi
non so, nessuno lo ha chiesto).
Ciao, SK
--
La pasienzia non è mai troppo (Totò)



XP č un sistema di classe NT
in tali sistemi se l'administrator te lo impedisce non puoi neanche spengere
il pc!
e VA BENE sia cosě!
son fatti per postazioni multiple....pensa se tu esci a mezzo di una
procedura che sta facendo il net admin!!!
per questo non si tratta di invocare le 2 api sega di win98
ma tutto si incentra nel cercare di ingannare il sistema facendoli acqyisire
il privilegio di administrator
questo che segue č l'esempio di allAPI network
'In a module
Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
Private Const ANYSIZE_ARRAY = 1
Private Const VER_PLATFORM_WIN32_NT = 2
Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Type LUID
LowPart As Long
HighPart As Long
End Type
Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type
Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal
ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As
Long
Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias
"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As
String, lpLuid As LUID) As Long
Private Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal
TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As
TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As
TOKEN_PRIVILEGES, ReturnLength As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long,
ByVal dwReserved As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA"
(ByRef lpVersionInformation As OSVERSIONINFO) As Long
'Detect if the program is running under Windows NT
Public Function IsWinNT() As Boolean
Dim myOS As OSVERSIONINFO
myOS.dwOSVersionInfoSize = Len(myOS)
GetVersionEx myOS
IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
'set the shut down privilege for the current application
Private Sub EnableShutDown()
Dim hProc As Long
Dim hToken As Long
Dim mLUID As LUID
Dim mPriv As TOKEN_PRIVILEGES
Dim mNewPriv As TOKEN_PRIVILEGES
hProc = GetCurrentProcess()
OpenProcessToken hProc, TOKEN_ADJUST_PRIVILEGES + TOKEN_QUERY, hToken
LookupPrivilegeValue "", "SeShutdownPrivilege", mLUID
mPriv.PrivilegeCount = 1
mPriv.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
mPriv.Privileges(0).pLuid = mLUID
' enable shutdown privilege for the current application
AdjustTokenPrivileges hToken, False, mPriv, 4 + (12 * mPriv.PrivilegeCount),
mNewPriv, 4 + (12 * mNewPriv.PrivilegeCount)
End Sub
' Shut Down NT
Public Sub ShutDownNT(Force As Boolean)
Dim ret As Long
Dim Flags As Long
Flags = EWX_SHUTDOWN
If Force Then Flags = Flags + EWX_FORCE
If IsWinNT Then EnableShutDown
ExitWindowsEx Flags, 0
End Sub
'Restart NT
Public Sub RebootNT(Force As Boolean)
Dim ret As Long
Dim Flags As Long
Flags = EWX_REBOOT
If Force Then Flags = Flags + EWX_FORCE
If IsWinNT Then EnableShutDown
ExitWindowsEx Flags, 0
End Sub
'Log off the current user
Public Sub LogOffNT(Force As Boolean)
Dim ret As Long
Dim Flags As Long
Flags = EWX_LOGOFF
If Force Then Flags = Flags + EWX_FORCE
ExitWindowsEx Flags, 0
End Sub
'In a form
'This project needs a form with three command buttons
Private Sub Command1_Click()
LogOffNT True
End Sub
Private Sub Command2_Click()
RebootNT True
End Sub
Private Sub Command3_Click()
ShutDownNT True
End Sub
Private Sub Form_Load()
'KPD-Team 2000
'URL: 
http://www.allapi.net/
'E-Mail: KPD...@Allapi.net
Command1.Caption = "Log Off NT"
Command2.Caption = "Reboot NT"
Command3.Caption = "Shutdown NT"
End Sub
=========================
non ho mai avuto il bisogno di provarlo perchč non c'č ragione che voglia
spengere il pc in un mio programma!
Ho il forte sospetto (almeno spero che sia cosě sennň č una bella falla!!!)
che per funzionare tu debba essere Administrator
cmq.....
quello che ti han detto tutti č vero.....se cercavi bene trovavi tutto
quello che ti serviva!
se non lo trovavi...era meglio se non lo trovavi???
ma la sapevi la differenza fra sistemi di classe NT e win98????
-- 
Il Wodkino Nazionale č a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 Quotefix e altro:
http://www.martek.it/go.asp?portamia=4
Usr: ICLVB Pw: amici

Ciao. Prima di tutto grazie per la risposta.
Purtroppo però ho provato il codice che mi hai passato....ma nulla è
cambiato. Funziona solo il LogOff.
Tu l'avevi provato?
Grazie
p.s. Tra l'altro l'utente con cui usavo il programma è un Administrator,
quindi dovrebbe chiuderlo, no?

"Giuseppe Marini"
Se niente di quello che e' stato postato
(anche in passato come ti hanno detto)
funziona prova questo :
 (poi devi andare via di SendKeys che tanto igenico non e')
'*.vbs (wsh 5.6)
set objshell = wscript.CreateObject("Shell.Application")
objshell.ShutdownWindows
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 200
WshShell.SendKeys "a"       '&Arresta
WScript.Sleep 100
''''''''''''WshShell.SendKeys "{enter}"
--
Fosco