[ Milan Jeftic @ 28.02.2010. 10:27 ] @
Problem je sledeci:Htjeo bih napraviti program u Visual Basic u kojem bi bilo recimo tri dugmeta svaki za jednu operaciju:iskljucivanje kompjutera,restartovanje i hibernacija.....Hvala unapred
[ loto17 @ 28.02.2010. 18:25 ] @
Code:

       Const EWX_LogOff As Long = 0
       Const EWX_SHUTDOWN As Long = 1
       Const EWX_REBOOT As Long = 2
       Const EWX_FORCE As Long = 4
       Private Declare Function ExitWindows _
               Lib "User32" Alias "ExitWindowsEx" _
               (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
      
     Private Sub Command1_Click()
          'Shut down windows
          ExitWindows EWX_SHUTDOWN, &HFFFFFFFF
      End Sub
      
     Private Sub Command2_Click()
            ExitWindows EWX_REBOOT, &HFFFFFFFF
       End Sub
  


Za pocetak: Gasenje i restart!
Konstante i deklaraciju staviti u glavni modul. Na formu postaviti Command1 i Command2 dugmice.




[ Milan Jeftic @ 01.03.2010. 19:47 ] @
E bas ti hvala...ovo ce mi bas pomoci...hvala
[ dava @ 04.03.2010. 21:20 ] @
Ne radi taj kod iz nekog razloga??? Probao sam.
Probajte ovako:

Code:

     Private Sub Command1_Click()
          'Shut down windows
          Shell "cmd /c shutdown -s -f -t 0", vbHide
     End Sub
      
     Private Sub Command2_Click()
          'Restart windows
          Shell "cmd /c shutdown -r -f -t 0", vbHide
     End Sub

     Private Sub Command3_Click()
          Hibernate windows
          Shell "cmd /c %windir%\system32\rundll32.exe powrprof.dll,SetSuspendState", vbHide
     End Sub



Ovako pozivate shell koji je jako mocna stvar i zasto ga ne koristiti. ;)
Učukajte u comand prompt-u
Code:
shutdown -?
konkretno za ovaj slucaj i dobijete listu sviceva.
Pozdrav



[Ovu poruku je menjao dava dana 05.03.2010. u 11:42 GMT+1]
[ Treechko @ 21.03.2010. 13:05 ] @
Ovo stavis u Modul:
Code:

Option Explicit

Public Declare Function ExitWindowsEx Lib "user32" (ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
Public Declare Function GetCurrentProcess Lib "kernel32" () As Long
Public Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Public Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Public Declare Function AdjustTokenPrivileges Lib "advapi32" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As Any, ReturnLength As Long) As Long
Public Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function LockWorkStation Lib "user32.dll" () As Long

Public Const TOKEN_ADJUST_PRIVILEGES As Long = &H20
Public Const TOKEN_QUERY As Long = &H8
Public Const SE_PRIVILEGE_ENABLED As Long = &H2

Public Const EWX_LOGOFF As Long = &H0
Public Const EWX_SHUTDOWN As Long = &H1
Public Const EWX_REBOOT As Long = &H2
Public Const EWX_FORCE As Long = &H4
Public Const EWX_POWEROFF As Long = &H8

Public Const VER_PLATFORM_WIN32_NT As Long = 2

Public Type OSVERSIONINFO
  OSVSize         As Long
  dwVerMajor      As Long
  dwVerMinor      As Long
  dwBuildNumber   As Long
  PlatformID      As Long
  szCSDVersion    As String * 128
End Type

Public Type LUID
   dwLowPart As Long
   dwHighPart As Long
End Type

Public Type LUID_AND_ATTRIBUTES
   udtLUID As LUID
   dwAttributes As Long
End Type

Public Type TOKEN_PRIVILEGES
   PrivilegeCount As Long
   laa As LUID_AND_ATTRIBUTES
End Type

Public Success As Long

Public Function IsWinNTPlus() As Boolean
#If Win32 Then
    Dim OSV As OSVERSIONINFO
    OSV.OSVSize = Len(OSV)
    If GetVersionEx(OSV) = 1 Then
        IsWinNTPlus = (OSV.PlatformID = VER_PLATFORM_WIN32_NT) And _
        (OSV.dwVerMajor >= 4)
    End If
#End If
End Function

Public Function EnableShutdownPrivledges() As Boolean
   Dim hProcessHandle As Long
   Dim hTokenHandle As Long
   Dim lpv_la As LUID
   Dim token As TOKEN_PRIVILEGES
   hProcessHandle = GetCurrentProcess()
If hProcessHandle <> 0 Then
If OpenProcessToken(hProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hTokenHandle) <> 0 Then
If LookupPrivilegeValue(vbNullString, "SeShutdownPrivilege", lpv_la) <> 0 Then
    With token
        .PrivilegeCount = 1
        .laa.udtLUID = lpv_la
        .laa.dwAttributes = SE_PRIVILEGE_ENABLED
    End With
If AdjustTokenPrivileges(hTokenHandle, False, token, ByVal 0&, ByVal 0&, ByVal 0&) <> 0 Then
    EnableShutdownPrivledges = True
End If
End If
End If
End If
End Function

A ovo u Form:
Code:

Private Sub Command1_Click()
    If IsWinNTPlus() Then
        Success = EnableShutdownPrivledges()
            If Success Then
                Call ExitWindowsEx(EWX_SHUTDOWN, 0&)
            Else
                Call ExitWindowsEx(EWX_SHUTDOWN, 0&)
            End If
    End If
End Sub

Private Sub Command2_Click()
    If IsWinNTPlus() Then
        Success = EnableShutdownPrivledges()
        If Success Then
            Call ExitWindowsEx(EWX_REBOOT, 0&)
        Else
            Call ExitWindowsEx(EWX_REBOOT, 0&)
        End If
    End If
End Sub

Private Sub Command3_Click()
    If IsWinNTPlus() Then
        Success = EnableShutdownPrivledges()
            If Success Then
                Call ExitWindowsEx(EWX_LOGOFF, 0&)
            Else
                Call ExitWindowsEx(EWX_LOGOFF, 0&)
            End If
    End If
End Sub


Moze li neko da okaci primer za Windows 7?
[ dava @ 21.03.2010. 19:44 ] @
Pa jesi probao onaj kod iznad tvog, trebalo bi da radi i na 7-mici.
[ Treechko @ 21.03.2010. 20:24 ] @
Nemam je trenutno instaliranu, ali predpostavljam da ce raditi.

Pitao sam cisto ovako, predpostavljao sam da ce neko postavi kod slican kao sto sam ja okacio cisto da vidim razliku .