Программное выключение монитора

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

Программное выключение монитора

Сообщение XairOn » 17.10.2004 (Вс) 15:03

Люди добрые, подскажите пожалуйста, почему у меня монитор программно не выключается? Всё это в WinXP происходит, и почему-то не работает, под 9.х не пробовал, хотя мне и не надо, необходимо что бы под NT всё работало. Вот так выглядит сама программа:

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal
wParam As Integer, ByVal lParam As Long) As Long

Const WM_SYSCOMMAND = &H112
Const SC_MONITORPOWER = &HF170

sub main()
SendMessage(GetDesktopWindow(), WM_SYSCOMMAND, SC_MONITORPOWER, 0&)
end sub
[/code]

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

Сообщение tyomitch » 17.10.2004 (Вс) 15:32

Потому что
SC_MONITORPOWER Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer.
lParam can have the following values:

1 means the display is going to low power.

2 means the display is being shut off.

А у тебя там 0.
Изображение

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 17.10.2004 (Вс) 19:52

Спасибо большое, но я это пробовал, я туда даже 4 и -1 засовывал... нифига не канает :-( А у тебя эта функция работает нормально?

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

Сообщение tyomitch » 17.10.2004 (Вс) 20:01

Нет. Потому что объявлять функцию надо правильно ;-)
Вот так работает:
Код: Выделить всё
Option Explicit

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function GetDesktopWindow Lib "user32" () As Long

Const WM_SYSCOMMAND = &H112&
Const SC_MONITORPOWER = &HF170&

Sub main()
SendMessage GetDesktopWindow, WM_SYSCOMMAND, SC_MONITORPOWER, 2
End Sub
Изображение

XairOn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 324
Зарегистрирован: 19.07.2004 (Пн) 20:20
Откуда: Irkutsk region

Сообщение XairOn » 18.10.2004 (Пн) 20:49

Спасибо... блин...типа, большое, ты меня как обычно выручил!!! :-)


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 8

    TopList  
cron