1
Не в сети
Сообщений: 117
Благодарностей: 2
Предупреждений:
Из: Russia Moscow
Род занятий:

Компьютер мой - (обычно) работает в течении всего дня, выключается только на ночь. В связи с чем, когда он мне не нужен или меня за ним просто нет - я софтово отключаю монитор (для этих целей - используется одна из двух программок: EventGhost или NirCMD)...
В них так-же имеется функционал включения (отключённого программно) монитора (до перехода на 8-ку - данные команды работали нормально), а вот после - они включают монитор на секунду, после чего он снова гаснет (при этом команда отключения - по прежнему работает правильно)... Вывод - в 8-ке что-то поменялось в этом плане, возможно есть какие-то встроенные команды - позволяющие включить монитор?

#209118   | 04.02.13 18:43
Не в сети
Сообщений: 389
Благодарностей: 19
Предупреждений:
Из: Russia
Род занятий: IT

Neytrino писал:Компьютер мой - (обычно) работает в течении всего дня, выключается только на ночь. В связи с чем, когда он мне не нужен или меня за ним просто нет - я софтово отключаю монитор (для этих целей - используется одна из двух программок: EventGhost или NirCMD)...
В них так-же имеется функционал включения (отключённого программно) монитора (до перехода на 8-ку - данные команды работали нормально), а вот после - они включают монитор на секунду, после чего он снова гаснет (при этом команда отключения - по прежнему работает правильно)... Вывод - в 8-ке что-то поменялось в этом плане, возможно есть какие-то встроенные команды - позволяющие включить монитор?


Первый раз слышу о такой привычке, ну да ладно. Я поставил последнюю прогу, NirCMD. Сделал ярлык с параметром monitor off. У меня монитор отключается и не включается, пока я мышь не пошевелю. Винда 8 x64 Pro. Значит у вам просто в фоне какая то программа мешает и включает монитор обратно.

#209119   | 04.02.13 20:04
Не в сети
Сообщений: 117
Благодарностей: 2
Предупреждений:
Из: Russia Moscow
Род занятий:

Singularity, Не совсем корректно изложил, у меня проблема не с выключением, а с включением выключенного...
P.S. а привычка эта связанна с тем - что при выполнении некоторых задач, комп управляется пультом...


Сообщение было отредактировано Neytrino (04.02.2013 22:18 GMT+3 часа(ов), назад)

#209120   | 04.02.13 22:07
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Проблема абсолютно не понятна. Даже если не вспоминать, что монитор обычно легко выключается кнопочкой на нём (ну, может не у всех она такая же удобная, как у меня), есть такое сочетание клавиш, как Win+L. Блокирует учетную запись и через минуту неактивности выключает монитор.
К тому же, привычка блокировать компьютер, отходя от него, на мой взгляд куда более полезная, чем привычка просто отключать монитор.
...
Ага. Постскриптум сразу не заметил. Ну, написанное стирать всё-равно не буду.

В принципе, можно было бы в настройках электропитания выставить период неактивности для отключения монитора минут на пять, но тогда он же будет включаться, если нажать что-то на пульте. А это, как я понял, не нужно.

Upd. Погуглил, нашел рабочее решение. Проверил, на Win8 Pro x64 всё ок.
1. Качаем AutoIt (прямая ссылка).
2. Нижеприведенный скрипт копируем в текстовый файл, изменив его расширение на au3.
3. Запускаем скрипт. Всё, дальше всё управляется хоткеями. Они описаны в окошке после запуска скрипта (окошко можно закрыть), при желании можно отредактировать скрипт, подставив нужные хоткеи или, например, выпилив это окошко при запуске, чтобы не раздражало при автозагрузке (удалить функцию MsgBox(...) ).

#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("{F9}", "_Monitor_OFF")
HotKeySet("{F10}", "_Monitor_ON")
HotKeySet("{Esc}", "_Quit")

MsgBox(64, "Monitor On/Off", "Нажмите  F9, чтобы выключить монитор." & @LF & _
                             "Нажмите  F10, чтобы включить монитор обратно." & @LF & _
                             "Нажмите  ESC, чтобы включить монитор и выйти из программы.")

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

6;iSave
EndFunc

Func _Quit()
_Monitor_ON()

Exit
EndFunc[/code]
Можно в AutoIT откомпилировать файл, чтобы больше не приходилось устанавливать сам AutoIt. Получится экзешник, который вроде как везде работать будет. Я бы сейчас скинул, но мне лень заливать куда-нибудь файл, мои горячие клавиши могут не понравиться, а сделать то же самое самому — минута делов. Так что лучше пусть тут исходный скрипт полежит, а там уже каждый себе как хочет настроит.
Минус: вроде нельзя повесить вкл/выкл на одну и ту же клавишу.


Сообщение было отредактировано ProVal (05.02.2013 01:23 GMT+3 часа(ов), назад)

#209121   | 05.02.13 00:19
Не в сети
Сообщений: 117
Благодарностей: 2
Предупреждений:
Из: Russia Moscow
Род занятий:

ProVal, а вы уверены что монитор будит именно данный код, а не ваше нажатие на клавишу "F10"?
Задача в том - чтобы запустив некое приложение (возможно с ключом) или выдав эмуляцию сочетания клавиш (что менее приветствуется, т.к. не все приложения понимают эмулированные нажатия) средствами Event Ghost - включить монитор (когда это будет нужно)...

#209122   | 05.02.13 02:19
Не в сети
Сообщений: 373
Благодарностей: 27
Предупреждений:
Из: ---
Род занятий:

Уверен. Потому что движение мышью или нажатия любых других клавиш никакой реакции не вызывают, кроме одной (только от мыши, на клавиатуру не реагирует у меня): монитор может на пару секунд проснуться, отобразить табличку, что он не подключен, и заснуть обратно. Если же нажать F10, то он подключается и просыпается окончательно, отобразив рабочий стол (или что там было открыто).
Система при этом реагирует на нажатия как положено.

#209123   | 05.02.13 02:28
Все права принадлежат © MSInsider.ru (ex TheVista.ru), 2019
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.042 секунд (Общее время SQL: 0.012 секунд - SQL запросов: 53 - Среднее время SQL: 0.00023 секунд))