Залипание на MONITOR-OFF

Обсуждение программ nnCron и nnCron LITE

Залипание на MONITOR-OFF

Postby Raistlin » Tue, 18 Apr 2017, 13:21

После выполнения MONITOR-OFF остаток задачи не выполняется. Win8.1 x64 (наблюдалось и на WinXP).
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Залипание на MONITOR-OFF

Postby dothen » Tue, 18 Apr 2017, 16:07

Raistlin попробуй так
Code: Select all
#( task_test_MONITOR
NoActive
WINAPI: GetShellWindow USER32.DLL
Action:

\ #define HWND_BROADCAST   0xffff
\ #define WM_SYSCOMMAND    0x0112
\ #define SC_MONITORPOWER  0xF170

    2  0xF170 0x0112 GetShellWindow SendMessageA DROP
    5000 PAUSE
    -1 0xF170 0x0112 GetShellWindow SendMessageA DROP

\ или так
\    2  0xF170 0x0112 GetForegroundWindow SendMessageA DROP
\    5000 PAUSE
\    -1 0xF170 0x0112 GetForegroundWindow SendMessageA DROP

\ или так
\    2  0xF170 0x0112 0xFFFF PostMessageA DROP
\    5000 PAUSE
\    -1 0xF170 0x0112 0xFFFF PostMessageA DROP

\ или так
\    2  0xF170 0x0112 GetShellWindow PostMessageA DROP
\    5000 PAUSE
\    -1 0xF170 0x0112 GetShellWindow PostMessageA DROP

\ или так
\    2  0xF170 0x0112 GetForegroundWindow PostMessageA DROP
\    5000 PAUSE
\    -1 0xF170 0x0112 GetForegroundWindow PostMessageA DROP
)#

dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Залипание на MONITOR-OFF

Postby Raistlin » Tue, 18 Apr 2017, 18:22

Работает. Спасибо!
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Залипание на MONITOR-OFF

Postby Raistlin » Tue, 18 Apr 2017, 23:14

Причем что забавно: спустя несколько часов задачу все же отпускает, при этом монитор гаснет еще раз:
Code: Select all
#( Monitor_Off
\ Win+F8
  WatchHotKey: "${F8}"
\ SingleInstance
\ NoLog
\ NoActive
  Action:
    VK_CAPITAL WAIT-KUP
    VK_SHIFT WAIT-KUP
    VK_LWIN WAIT-KUP
    VK_RWIN WAIT-KUP
    VK_F8 WAIT-KUP
    MONITOR-OFF
    S" Monitor off" CRON-LOG
)#

Code: Select all
16:51:20 5712 Load crontab
16:51:20 5712 C:\Users\Raistlin\AppData\Roaming\nnCron\nncron.tab
16:51:20 5712 C:\Users\Raistlin\AppData\Roaming\nnCron\vista+.tab
16:51:20 5712 C:\Users\Raistlin\AppData\Roaming\nnCron\win81.tab
16:51:20 5712 C:\Users\Raistlin\AppData\Roaming\nnCron\lirc.tab
16:51:20 5712 C:\Users\Raistlin\AppData\Roaming\nnCron\test.tab
16:51:26 1452 TASK: task_test_MONITOR
16:51:44 5676 TASK: task_test_MONITOR
18:58:10 1868 TASK: Monitor_Off
19:11:26 4760 TASK: Monitor_Off
21:02:32 4216 TASK: Monitor_Off
23:10:22 1868 Monitor off
23:10:22 4760 Monitor off
23:10:22 4216 Monitor off
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42

Re: Залипание на MONITOR-OFF

Postby dothen » Wed, 19 Apr 2017, 01:14

Если развернуть слово MONITOR-OFF то получим это:
Code: Select all
2 SC_MONITORPOWER WM_SYSCOMMAND HWND_BROADCAST SendMessageA DROP ;

В MSDN написано:
Функция SendMessage отправляет заданное сообщение окну или окнам. Функция вызывает оконную процедуру для заданного окна и НЕ ВОЗВРАЩАЕТ ЗНАЧЕНИЕ ДО ТЕХ ПОР, пока оконная процедура не обработает сообщение.

LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

hWnd
Дескриптор окна, оконная процедура которого примет сообщение. Если этот параметр - HWND_BROADCAST, сообщение отправляется ВСЕМ ОКНАМ ВЕРХНЕГО УРОВНЯ В СИСТЕМЕ, включая заблокированные или невидимые, не имеющие владельца, перекрывающие и выскакивающие окна; но сообщение не отправляется дочерним окнам.
...

Возможно причина в этом.
Т.е. в каком-то окне есть проблема с обработкой сообщения.
dothen
 
Posts: 184
Joined: Mon, 16 Mar 2015, 04:58

Re: Залипание на MONITOR-OFF

Postby VoidVolker » Wed, 19 Apr 2017, 10:55

Code: Select all
0xFFFF CONSTANT HWND_BROADCAST
0x0112 CONSTANT WM_SYSCOMMAND
0xF170 CONSTANT SC_MONITORPOWER
0x0002 CONSTANT POWER_OFF
0x0001 CONSTANT POWER_LOW
-1     CONSTANT POWER_ON

: MonitorOff
    POWER_OFF SC_MONITORPOWER WM_SYSCOMMAND HWND_BROADCAST PostMessageA DROP
;

: MonitorOn
    POWER_ON SC_MONITORPOWER WM_SYSCOMMAND HWND_BROADCAST PostMessageA DROP
;

: MonitorLow
    POWER_LOW SC_MONITORPOWER WM_SYSCOMMAND HWND_BROADCAST PostMessageA DROP
;
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Залипание на MONITOR-OFF

Postby Raistlin » Wed, 19 Apr 2017, 19:27

MonitorOn не работает (Win8.1 x64). Наверное, вот почему. А MonitorOff и MonitorLow заставляют монитор сначала переключиться на мгновение в режим сна, затем проснуться и заснуть окончательно.
Windows XP SP3 Corp. + MUI, nnCron 1.93.1125.14, nnBackup 3.02b3 Build 147

Magically yours
Raistlin
User avatar
Raistlin
 
Posts: 159
Joined: Wed, 03 Nov 2004, 12:42


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Bing [Bot] and 3 guests

cron