Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    20

    [VB6] cmd per spegnere il pc

    sapete dirmi qual'è il comando x spegnere il pc con visual basic???

  2. #2
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    Devi usare quasi sicuramente delle API.
    Quale sistema operativo devi chiudere?
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    20
    win xp

  4. #4
    Utente di HTML.it L'avatar di goku370
    Registrato dal
    Oct 2003
    Messaggi
    569
    codice:
    Option Explicit
    
    Private Type LUID
        UsedPart As Long
        IgnoredForNowHigh32BitPart As Long
    End Type
    
    Private Type TOKEN_PRIVILEGES
        PrivilegeCount As Long
        TheLuid As LUID
        Attributes As Long
    End Type
    
    Private Const EWX_SHUTDOWN As Long = 1
    Private Const EWX_FORCE As Long = 4
    Private Const EWX_REBOOT As Long = 2
    Private Const EWX_POWEROFF As Long = 8
    
    Private Declare Function ExitWindowsEx Lib "User32.dll" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
    
    Private Declare Function GetCurrentProcess Lib "Kernel32.dll" () As Long
    
    'Dichiarazioni per acquisire i diritti necessari all'arresto/riavvio della macchina.
    Private Declare Function OpenProcessToken Lib "Advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
    Private Declare Function LookupPrivilegeValue Lib "Advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
    Private Declare Function AdjustTokenPrivileges Lib "Advapi32.dll" (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 Sub AdjustToken()
        Const TOKEN_ADJUST_PRIVILEGES = &H20
        Const TOKEN_QUERY = &H8
        Const SE_PRIVILEGE_ENABLED = &H2
        Dim hdlProcessHandle As Long, hdlTokenHandle As Long
        Dim tmpLuid As LUID
        Dim tkp As TOKEN_PRIVILEGES, tkpNewButIgnored As TOKEN_PRIVILEGES
        Dim lBufferNeeded As Long
    
        hdlProcessHandle = GetCurrentProcess()
        OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hdlTokenHandle
    
        'Get the LUID for shutdown privilege.
        LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid
    
        With tkp
            tkp.PrivilegeCount = 1    ' One privilege to set
            tkp.TheLuid = tmpLuid
            tkp.Attributes = SE_PRIVILEGE_ENABLED
        End With
    
        'Enable the shutdown privilege in the access token of this process.
        AdjustTokenPrivileges hdlTokenHandle, False, tkp, Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded
    
    End Sub
    Private Sub Command1_Click()
        'Acquisisce i diritti.
        AdjustToken
        'Arresta il sistema.
        ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_POWEROFF), &HFFFF
    End Sub
    Al click sul pulsante, il pc viene spento... Solo WIN XP e 2000 però.
    Per altri SO, il codice è un po' diverso...
    Una tecnologia sufficientemente avanzata è indistinguibile dalla magia. Terza legge di Clarke

  5. #5
    ciao goku, mi sapresti dire come mai usando l' API di windows non riesco a spegnere il pc ma ho solo una disconnessione dell' utente?
    jabjoint

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da jabjoint
    ciao goku, mi sapresti dire come mai usando l' API di windows non riesco a spegnere il pc ma ho solo una disconnessione dell' utente?
    Hai già portato in rilievo un'altra discussione sull'argomento.

    Non portiamo nuovamente alla ribalta più discussioni sullo stesso argomento, soprattutto se concluse da tempo come questa.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.