функции или API

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ВуД
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 59
Зарегистрирован: 23.02.2006 (Чт) 17:40
Откуда: Иркутск (Сибирь)

функции или API

Сообщение ВуД » 27.02.2006 (Пн) 15:32

Кто знает функции или API для выключения, перезагрузки, спящего режима, ждущего режима компьютера?

GB826
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 312
Зарегистрирован: 04.08.2005 (Чт) 0:58
Откуда: Планета #3

Сообщение GB826 » 27.02.2006 (Пн) 15:56

Кто знает функции ИЛИ API
:о)) впечатляет вопрос !

В поиск! ссылку не знаю!

Public Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long
Пора уже всем хорошим людям собраться и убить всех плохих людей.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.02.2006 (Пн) 16:04

ExitWindowsEx
SetSystemPowerState
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 27.02.2006 (Пн) 16:48

Угу, ExitWindowsEx выключает и перезагружает... Особенно на NT
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.02.2006 (Пн) 16:51

keks-n
Угу... выключает и перезагружает... а разве нет?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

AjaxVS
Постоялец
Постоялец
 
Сообщения: 506
Зарегистрирован: 01.12.2004 (Ср) 13:12
Откуда: Donetsk, Battle.Net

Сообщение AjaxVS » 28.02.2006 (Вт) 1:31

GSerg
Да вроде как остается картинка "Теперь питание компа можно вырубить"... Куда это годится?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 2:27

Ещё можно запускать Shutdown.exe с различными параметрами. Чтобы их узнать нужно из ком. строки запусить его с параметром /?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ВуД
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 59
Зарегистрирован: 23.02.2006 (Чт) 17:40
Откуда: Иркутск (Сибирь)

Сообщение ВуД » 28.02.2006 (Вт) 8:24

VB 6.0 для XP

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 28.02.2006 (Вт) 8:30

Да вроде как остается картинка "Теперь питание компа можно вырубить"... Куда это годится?
А разве присутствие данной картинки не обусловлено типом мать-платы?
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 8:32

ВуД писал(а):VB 6.0 для XP


А я ем пельмени, и что? К чему это вообще?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 8:34

Twister писал(а):
Да вроде как остается картинка "Теперь питание компа можно вырубить"... Куда это годится?
А разве присутствие данной картинки не обусловлено типом мать-платы?


Ох опередил...

Данная картинка свойственна для Win9x - лежит она в файле logout.sys если мне не изменяеет память. Просто некоторые мамки вырубаются не успевая показать эту картинку... :lol:
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 28.02.2006 (Вт) 8:35

VB 6.0 для XP
Имелось ввиду, что автору нужна функция, которая будет работать в ХР, а программа на VB6. Тёмыч уже сказал ...
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.02.2006 (Вт) 9:38

Хакер писал(а):
Twister писал(а):
Да вроде как остается картинка "Теперь питание компа можно вырубить"... Куда это годится?
А разве присутствие данной картинки не обусловлено типом мать-платы?


Ох опередил...

Данная картинка свойственна для Win9x - лежит она в файле logout.sys если мне не изменяеет память. Просто некоторые мамки вырубаются не успевая показать эту картинку... :lol:

Данная картинка свойственна для всех без исключения версий Винды.
У Win9x она, действительно, лежит в файле logos.sys
И чего из этого?
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 11:10

tyomitch, а с чего такая уверенность что у всех? Прочитал где или ты каким то образом выяснил?

И если да то почему-то я не разу не видел её XP
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 28.02.2006 (Вт) 11:22

У меня дома ХР с такой (она выглядит по другому) картинкой, потому что мать старая...
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.02.2006 (Вт) 11:58

Хакер писал(а):tyomitch, а с чего такая уверенность что у всех? Прочитал где или ты каким то образом выяснил?

Видел собственными глазами.

Хакер писал(а):И если да то почему-то я не разу не видел её XP

А Гейтса ты видел? Может, его тоже выдумали? ;-)
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 12:26

Выдумали, гады микромягкие :evil:

Ну раз есть так, есть буду знать...

ЗЫ. Ох как всем нравится на меня поорать...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 28.02.2006 (Вт) 12:31

ЗЫ. Ох как всем нравится на меня поорать...

Ну кто ж орал-то? Просто тебе пояснили, в чем ты не прав... :wink:
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 12:35

—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 28.02.2006 (Вт) 12:41

На кого ж орать то? Юстас умотал на исходники.ру видать. patriot_kz я уже давно не видел, хотя топики и посты были отменные я вам скажу. Кто остался в списке?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 12:46

ANDLL, ну и где же они тогда регистрируются???

На кого ж орать то?


IMHO ни на кого не надо орать. Всё надо делать в дружественной обстановке...
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.02.2006 (Вт) 15:04

Хакер писал(а):ANDLL, ну и где же они тогда регистрируются???

Прикинь: нигде :roll:
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 28.02.2006 (Вт) 15:30

LШутка да?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 28.02.2006 (Вт) 16:44

Хакер писал(а):ANDLL, ну и где же они тогда регистрируются???
Кто они? Юзвери или logon.sys'ы?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.02.2006 (Вт) 17:22

ANDLL писал(а):
Хакер писал(а):ANDLL, ну и где же они тогда регистрируются???
Кто они? Юзвери или logon.sys'ы?

Я так понял, что библиотеки.
Изображение

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 28.02.2006 (Вт) 18:01

GSerg писал(а):keks-n
Угу... выключает и перезагружает... а разве нет?..

На Win98 всё прекрасно, а вот под Win2000(и если мне не изменяет память то и на WinXP) ни выключение, ни перезагрузка посредством сией функции не прокатывают :( Там надо юзать InitiateSystemShutDown
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 28.02.2006 (Вт) 18:13

keks-n писал(а):На Win98 всё прекрасно, а вот под Win2000(и если мне не изменяет память то и на WinXP) ни выключение, ни перезагрузка посредством сией функции не прокатывают :( Там надо юзать InitiateSystemShutDown


Все прекрасно работает на NT и ее потомках (я про ExitWindowsEx), а вот на Win95 и ее родсттвенники InitiateSystemShutdown не работает...

Окно типа "Питание можно отключить..." разное для разных ОС, а его появление или непоявление зависит от мамы (а иногда еще и от видеокарты), а не от ОС
Весь мир матрица, а мы в нем потоки байтов!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 28.02.2006 (Вт) 18:36

Все прекрасно работает на NT и ее потомках
...Если только процессу выбить соответствующие привелегии.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 28.02.2006 (Вт) 18:40

ANDLL писал(а):...Если только процессу выбить соответствующие привелегии.


Ну это само собой...
Весь мир матрица, а мы в нем потоки байтов!

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 28.02.2006 (Вт) 23:16

Вот код из API Guide, выключающий. перезагружающий комп в NT/2000/XP:
Код: Выделить всё
'In a module
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
Type OSVERSIONINFO
    dwOSVersionInfoSize As Long
    dwMajorVersion As Long
    dwMinorVersion As Long
    dwBuildNumber As Long
    dwPlatformId As Long
    szCSDVersion As String * 128
End Type
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
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 Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
'Detect if the program is running under Windows NT
Public Function IsWinNT() As Boolean
    Dim myOS As OSVERSIONINFO
    myOS.dwOSVersionInfoSize = Len(myOS)
    GetVersionEx myOS
    IsWinNT = (myOS.dwPlatformId = VER_PLATFORM_WIN32_NT)
End Function
'set the shut down privilege for the current application
Private Sub EnableShutDown()
    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)
End Sub
' Shut Down NT
Public Sub ShutDownNT(Force As Boolean)
    Dim ret As Long
    Dim Flags As Long
    Flags = EWX_SHUTDOWN
    If Force Then Flags = Flags + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx Flags, 0
End Sub
'Restart NT
Public Sub RebootNT(Force As Boolean)
    Dim ret As Long
    Dim Flags As Long
    Flags = EWX_REBOOT
    If Force Then Flags = Flags + EWX_FORCE
    If IsWinNT Then EnableShutDown
    ExitWindowsEx Flags, 0
End Sub
'Log off the current user
Public Sub LogOffNT(Force As Boolean)
    Dim ret As Long
    Dim Flags As Long
    Flags = EWX_LOGOFF
    If Force Then Flags = Flags + EWX_FORCE
    ExitWindowsEx Flags, 0
End Sub

'In a form
'This project needs a form with three command buttons
Private Sub Command1_Click()
    LogOffNT True
End Sub
Private Sub Command2_Click()
    RebootNT True
End Sub
Private Sub Command3_Click()
    ShutDownNT True
End Sub
Private Sub Form_Load()
    'KPD-Team 2000
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    Command1.Caption = "Log Off NT"
    Command2.Caption = "Reboot NT"
    Command3.Caption = "Shutdown NT"
End Sub

По поводу картинок на мониторе после выключения - это зависит от материнской платы. На новых новые мамки формата ATX вырубаются без всяких картинок, старые же (AT) так не могут.
ЗЫ: Вообще-то эта тема уже избитая, поднимали её много раз. В следующий раз сначала воспользуйся поиском.

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 76

    TopList