[ 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 |
[ Milan Jeftic @ 28.02.2010. 10:27 ] @
[ 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: konkretno za ovaj slucaj i dobijete listu sviceva.shutdown -? 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 ![]() Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|