لقد حصلت على عدة اكواد لايقاف التشغيل و لكنها لا تعمل على ةيندوز XPبل يقوم الكود بتسجيل الخروج بدلا من ايقاف التشغيل
و شكرا لكل من يجيب على هذا السؤال
لقد حصلت على عدة اكواد لايقاف التشغيل و لكنها لا تعمل على ةيندوز XPبل يقوم الكود بتسجيل الخروج بدلا من ايقاف التشغيل
و شكرا لكل من يجيب على هذا السؤال
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 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 Private Const WM_DRAWCLIPBOARD = &H308 Private Const GWL_WNDPROC = (-4) Public Function ShutDownSystem(Force As Boolean) As String On Error GoTo Failed Dim Flags As Long Flags = EWX_SHUTDOWN If Force Then Flags = Flags + EWX_FORCE If IsWinNT Then If EnableShutDown = True Then If ExitWindowsEx(Flags, 0) <> 0 Then ShutDownNT = "T" End If End If Else If ExitWindowsEx(EWX_FORCE Or EWX_SHUTDOWN, 0) <> 0 Then ShutDownNT = "T" End If End If Exit Function Failed: ShutDownNT = "F" & Err.Description End Function Private Function EnableShutDown() As String 'Set the shut down privilege for the current application On Error GoTo Failed 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) EnableShutDown = True Exit Function Failed: EnableShutDown = False End Function Private Function IsWinNT() As Boolean If OSversion = WINNT_XP_SERVER Then IsWinNT = True End If End Function
this code in module and then just call the shutdown function from the form
فريق إيجيت بروجيكتس لتطوير و تصميم مشاريع التخرج لطلبة نظم الحاسبات و الإتصالات و حلول الشركات
http://www.egit-projects.comمن موضوعــاتــى
برنامج البحث المتقدم In-File Spider V1.5
أداه مصريه شبيهه بميكروسوفت XML 3.0 + إضافات جديده و أسرع فى الأداء
ما تحتاجة لتصميم البرامج من ادوات و موارد
Handle-X Trial V1.0 ...... برنامج الشبكات و الإختراق العربى 100% بدون أدوات OCX خارجيه
اشكرك يا اخ احمد على اهتمامك و لكن هذا الكود لم يعمل و عند الضغط على الزر Run تظهر رسالة خطأ مكتوب فيها User-defined type not defined
ارجو ان تتاكد من صحة الكود
و شكرا......
جرب هذا :
'IN THE FORM Public Function ShutDownSystem(Force As Boolean) As String On Error GoTo Failed Dim Flags As Long Flags = EWX_SHUTDOWN If Force Then Flags = Flags + EWX_FORCE If IsWinNT Then If EnableShutDown = True Then If ExitWindowsEx(Flags, 0) <> 0 Then ShutDownNT = "T" End If End If Else If ExitWindowsEx(EWX_FORCE Or EWX_SHUTDOWN, 0) <> 0 Then ShutDownNT = "T" End If End If Exit Function Failed: ShutDownNT = "F" & Err.Description End Function Private Function EnableShutDown() As String 'Set the shut down privilege for the current application On Error GoTo Failed 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) EnableShutDown = True Exit Function Failed: EnableShutDown = False End Function Private Function IsWinNT() As Boolean If OSversion = WINNT_XP_SERVER Then IsWinNT = True End If End Function
وهذا فى Module
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 TOKEN_PRIVILEGES, ReturnLength As Long) As Long Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long Public Const EWX_LOGOFF = 0 Public Const EWX_SHUTDOWN = 1 Public Const EWX_REBOOT = 2 Public Const EWX_FORCE = 4 Public Const TOKEN_ADJUST_PRIVILEGES = &H20 Public Const TOKEN_QUERY = &H8 Public Const SE_PRIVILEGE_ENABLED = &H2 Public Const ANYSIZE_ARRAY = 1 Public Const VER_PLATFORM_WIN32_NT = 2 Public Const WM_DRAWCLIPBOARD = &H308 Public Const GWL_WNDPROC = (-4) 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
سيعمل هذا إن شاء الله
فريق إيجيت بروجيكتس لتطوير و تصميم مشاريع التخرج لطلبة نظم الحاسبات و الإتصالات و حلول الشركات
http://www.egit-projects.comمن موضوعــاتــى
برنامج البحث المتقدم In-File Spider V1.5
أداه مصريه شبيهه بميكروسوفت XML 3.0 + إضافات جديده و أسرع فى الأداء
ما تحتاجة لتصميم البرامج من ادوات و موارد
Handle-X Trial V1.0 ...... برنامج الشبكات و الإختراق العربى 100% بدون أدوات OCX خارجيه
هذا الموضوع مغلق.