Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: (+) Выключение компа.... Добавлено: 23.05.03 12:52  

Автор вопроса:  Makc

как это сделать в ВБ?

можно конечно выполнить батник вот с таким содержимым rundll32.exe shell32,SHExitWindowsEx 1 , но хотелось бы именно из ВБ !!!

Заранее благодарен!

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 ZeroX



ICQ: 220401330 

Вопросов: 47
Ответов: 406
 Профиль | | #1 Добавлено: 23.05.03 13:43

Держи код

Option Explicit
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

Просто вызываешь процедуры из модуля!!!

Если тебя смущает Sub Main-то тогда у тебя лыжи точно не едут

А ну если хочешь я тебе намылить могу DLL -делает тоже самое и даже больше

Ответить

Номер ответа: 4
Автор ответа:
 Makc



Вопросов: 17
Ответов: 45
 Профиль | | #4 Добавлено: 23.05.03 14:14
не, все нормально, я допер :)

Ответить

Номер ответа: 5
Автор ответа:
 &&&&M



Вопросов: 8
Ответов: 68
 Профиль | | #5 Добавлено: 23.05.03 14:19

Люди! Зачем так извращаться?

Напиши в программе

shell "rundll32.exe shell32,SHExitWindowsEx 1"

и все заработает.

Ответить

Номер ответа: 6
Автор ответа:
 Makc



Вопросов: 17
Ответов: 45
 Профиль | | #6 Добавлено: 23.05.03 14:25

однако ты прав :)

я уже такое наворотил, жаль переделывать :D

Ответить

Номер ответа: 7
Автор ответа:
 ZeroX



ICQ: 220401330 

Вопросов: 47
Ответов: 406
 Профиль | | #7 Добавлено: 23.05.03 14:38
shell "rundll32.exe shell32,SHExitWindowsEx 1"- этот код у тебя под NT-системами работать врятли будет

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам