Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Функция "отключения монитора"

Ответить
Настройки темы
[решено] Функция "отключения монитора"

Аватара для sashadeg

Старожил


Сообщения: 379
Благодарности: 6

Профиль | Отправить PM | Цитировать


Есть ли такая функция, чтобы прервать сигнал монитора с видео картой и соответственно отключить монитор?

-------
Ну вы ребята даёте...


Отправлено: 23:16, 05-08-2009

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Функции для отключения/включения монитора:

Код: Выделить весь код
#NoTrayIcon

Global Const $lciWM_SYSCommand = 274
Global Const $lciSC_MonitorPower = 61808
Global Const $lciPower_Off = 2
Global Const $lciPower_On = -1

Global $MonitorIsOff = False

HotKeySet("{F11}", "_Monitor_OFF")
HotKeySet("{F10}", "_Monitor_ON")
HotKeySet("{Esc}", "_Quit")

MsgBox(64, "Monitor On/Off", "Press F11 to turn off the monitor." & @LF & _
                            "Press F10 to turn on the monitor back." & @LF & _
                            "Press ESC to turn on the monitor and exit program.")

While 1
    Sleep(10)
WEnd

Func _Monitor_ON()
    $MonitorIsOff = False
    Local $Progman_hwnd = WinGetHandle('[CLASS:Progman]')

    DllCall('user32.dll', 'int', 'SendMessage', _
                                                'hwnd', $Progman_hwnd, _
                                                'int', $lciWM_SYSCommand, _
                                                'int', $lciSC_MonitorPower, _
                                                'int', $lciPower_On)
EndFunc

Func _Monitor_OFF()
    $MonitorIsOff = True
    Local $Progman_hwnd = WinGetHandle('[CLASS:Progman]')

    While $MonitorIsOff = True
        DllCall('user32.dll', 'int', 'SendMessage', _
                                                    'hwnd', $Progman_hwnd, _
                                                    'int', $lciWM_SYSCommand, _
                                                    'int', $lciSC_MonitorPower, _
                                                    'int', $lciPower_Off)
        _IdleWaitCommit(0)
        Sleep(20)
    WEnd
EndFunc

Func _IdleWaitCommit($idlesec)
    Local $iSave, $LastInputInfo = DllStructCreate ("uint;dword")
    DllStructSetData ($LastInputInfo, 1, DllStructGetSize ($LastInputInfo))
    DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))

    Do
        $iSave = DllStructGetData ($LastInputInfo, 2)
        Sleep(60)
        DllCall ("user32.dll", "int", "GetLastInputInfo", "ptr", DllStructGetPtr ($LastInputInfo))
    Until (DllStructGetData ($LastInputInfo, 2)-$iSave) > $idlesec Or $MonitorIsOff = False

    Return DllStructGetData ($LastInputInfo, 2)-$iSave
EndFunc

Func _Quit()
    _Monitor_ON()

    Exit
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:27, 06-08-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Creat0R, попутный, интересующий меня, вопрос: Вы не замечали какую-либо разницу при использовании lParam = 1 (low power) и lParam = 2 (shut off), как в вышеприведённом Вашем скрипте (вроде бы некая разница должна быть, но визуально я не заметил различий)?

Отправлено: 03:33, 06-08-2009 | #3


Аватара для sashadeg

Старожил


Сообщения: 379
Благодарности: 6

Профиль | Отправить PM | Цитировать


Да, спасибо Creator... Мне в личке proxi твой код скинул уже Ещё вчера его опробовал... Потрясающе!!!! Всё как и хотелось Даже с хоткеями точно попал

-------
Ну вы ребята даёте...


Отправлено: 08:50, 06-08-2009 | #4


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Iska, посмотри тут: "ENERGY STAR specification for Monitors/Displays ",
иногда отличается временем включения монитора (на CRT мониторах было заметней)

Отправлено: 10:13, 06-08-2009 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


amel27, за первое — знаю, но всё равно спасибо; за второе — отдельное спасибо: меня именно это интересовало, поскольку сам я, как писал выше, что на CRT, что на LCD этой разницы не видел.

Отправлено: 11:52, 06-08-2009 | #6


Аватара для angry_dog

Старожил


Сообщения: 168
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Функции для отключения/включения монитора: »
Подскажите, как воспользоваться приведённым кодом?

Отправлено: 17:46, 07-01-2011 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата angry_dog:
как воспользоваться приведённым кодом? »
Ну... эта... как бы запустить нужно в скрипте

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 00:04, 08-01-2011 | #8


Аватара для angry_dog

Старожил


Сообщения: 168
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Creat0R:
Ну... эта... как бы запустить нужно в скрипте »
Создал текстовый файл, скопировал содержимое, поменял расширение на vbs, запустил.. ошибка. Что не так?

Отправлено: 00:27, 08-01-2011 | #9


Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата angry_dog:
поменял расширение на vbs, запустил.. ошибка »
Тема же посвящена языку Autoit и поэтому соответственно скрипт для него. Для начала почитайте про этот язык програмирования, установите его, далее уже можете поменять разрешение вашего файла со скриптом на *.au3 и уже запустить...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:36, 08-01-2011 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Функция "отключения монитора"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] Как сделать ярлык для включения и отключения режима "расширить эти экраны" Vidok08 Microsoft Windows 7 2 07-11-2009 21:19
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? verdix Microsoft Windows 2000/XP 3 03-10-2009 23:46
[решено] Монитор или видеокарта.. назвовем так "Работа монитора не в полную силу.." Selendal Непонятные проблемы с Железом 9 25-03-2008 20:41
Ошибка - Не работает функция автозапуска "Всегда выполнять выбранное действие" sanmon Microsoft Windows 2000/XP 1 20-03-2008 17:41
[решено] неработает функция "звукозапись" rustam1107 Microsoft Windows Vista 6 03-05-2007 01:20




 
Переход