Страница: 1 |
как это сделать в ВБ? можно конечно выполнить батник вот с таким содержимым rundll32.exe shell32,SHExitWindowsEx 1 , но хотелось бы именно из ВБ !!! Заранее благодарен!
Держи код Option Explicit толи лыжи не удут толи я .................. как мне этот модуль из программы запустить? серьезно, въехать не могу Просто вызываешь процедуры из модуля!!! Если тебя смущает Sub Main-то тогда у тебя лыжи точно не едут А ну если хочешь я тебе намылить могу DLL -делает тоже самое и даже больше Люди! Зачем так извращаться? Напиши в программе shell "rundll32.exe shell32,SHExitWindowsEx 1" и все заработает. однако ты прав я уже такое наворотил, жаль переделывать :D Страница: 1 |
Вопрос: (+) Выключение компа....
Добавлено: 23.05.03 12:52
Автор вопроса:
Makc
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа: ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #1
Добавлено: 23.05.03 13:43
Private Declare Function ExitWindowsEx Lib "user32" ( ByVal dwOptions As Long, ByVal dwReserved As Long) As Long
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As Any) As Long
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
' Константы для установления разрешения на выполнения действий
' (выключения/перезагрузки и т.п.). Только для Windows семейства NT
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_QUERY = &H8
Private Const SE_PRIVILEGE_ENABLED = &H2
' Константы выполнения действий (выключения/перезагрузки и т.п.)
Private Const EWX_LOGOFF As Long = 0 ' Смена пользователя
Private Const EWX_SHUTDOWN As Long = 1 ' Выключение
Private Const EWX_RESTART As Long = 2 ' Перезагрузка
Private Const EWX_FORCE As Long = 4 ' Быстрое завершение работы
Private Const EWX_SHUTDOWN_ATX As Long = 8 ' Выключение с поддержкой ACPI
' Константы для проверки версии Windows
Private Const VER_PLATFORM_WIN32_WINDOWS = 1 ' Windows 9x
Private Const VER_PLATFORM_WIN32_NT = 2 ' Windows NT/2000/XP
' Для установления разрешения на выполнения действий
' (выключения/перезагрузки и т.п.). Только для Windows семейства NT
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
' Для проверки версии Windows
Private Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
End Type
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion
Номер ответа: 2
Автор ответа: Makc
Вопросов: 17
Ответов: 45
Профиль | | #2
Добавлено: 23.05.03 13:51
Номер ответа: 3
Автор ответа: ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #3
Добавлено: 23.05.03 14:06
Номер ответа: 4
Автор ответа: Makc
Вопросов: 17
Ответов: 45
Профиль | | #4
Добавлено: 23.05.03 14:14
не, все нормально, я допер
Номер ответа: 5
Автор ответа: &&&&M
Вопросов: 8
Ответов: 68
Профиль | | #5
Добавлено: 23.05.03 14:19
Номер ответа: 6
Автор ответа: Makc
Вопросов: 17
Ответов: 45
Профиль | | #6
Добавлено: 23.05.03 14:25
Номер ответа: 7
Автор ответа: ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #7
Добавлено: 23.05.03 14:38
shell "rundll32.exe shell32,SHExitWindowsEx 1"- этот код у тебя под NT-системами работать врятли будет