Ограничить WIN-TO-TRAY

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

Ограничить WIN-TO-TRAY

Postby SeMa » Thu, 25 Apr 2013, 15:27

Есть простая задача:
Code: Select all
#( Minimize2Tray
WatchHotKey: "^`"
Action:
    GetForegroundWindow N>S WIN-TO-TRAY
)#

Всё отлично работает. С одним неприятным нюансом.
Если на экране остался только десктоп и случайно нажать Ctrl-`, то, в зависимости от фокуса, в трей сворачивается десктоп с иконками (т.е. остаётся пустой десктоп с обоями, в трее — пиктограмка неопознанного приложения) (но это ещё ничего)
или сворачивается панель задач (explorer) со всем содержимым, и, естественно, никакого трея на экране нет. Все программы работают, по кнопке "Пуск" появляется соотв. меню, работает переключение по Alt-Tab. Но если что-то доступно только ч-з трей, то всё! Некоторые свёрнутые окна можна достать через консоль. Но сам факт в этом случае не очень приятен.
Как можно исключить explorer от сворачивания?
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Ограничить WIN-TO-TRAY

Postby VoidVolker » Thu, 25 Apr 2013, 15:41

Проверять заголовок/класс окна и только потом сворачивать.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Ограничить WIN-TO-TRAY

Postby Morituruz » Thu, 25 Apr 2013, 15:48

Сделать простую задачу по развёртыванию только что свёрнутого окна
Да, собственно, вот:
Code: Select all
#( CLASSIC-TASK-#-win_min
HyperActive
MonitorResponseTime
10 TO MonitorResponseTime
WatchHotKey: "^([)"
TO MonitorResponseTime
VARIABLE min_window_title
Action:
GetForegroundWindow min_window_title !
WIN-MINIMIZE: "%GetForegroundWindow%"
)#

#( CLASSIC-TASK-#-win_res
HyperActive
MonitorResponseTime
10 TO MonitorResponseTime
WatchHotKey: "^(])"
TO MonitorResponseTime
Action:
WIN-RESTORE: "%min_window_title @%"
)#
User avatar
Morituruz
 
Posts: 727
Joined: Sun, 14 Oct 2007, 01:51

Re: Ограничить WIN-TO-TRAY

Postby SeMa » Thu, 25 Apr 2013, 17:27

VoidVolker wrote:Проверять заголовок/класс окна и только потом сворачивать.

Это я понимаю, но с explorer что-то не получается :(.
Moriturus wrote:Сделать простую задачу по развёртыванию только что свёрнутого окна

Мне как раз неинтересно разворачивать только что свёрнутое окно, т.к. это может понадобиться, скажем, через час или два, когда я тем же способом сворачивал/разворачивал другие окна. На каждое хоткеев не напасёшся ;).
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Ограничить WIN-TO-TRAY

Postby VoidVolker » Thu, 25 Apr 2013, 18:04

SeMa wrote:Это я понимаю, но с explorer что-то не получается

А что именно не получается? Точно не помню, но возможно этот вопрос уже всплывал. В любом случае, там все просто:
Code: Select all
#( Задача_185625042013
NoActive
SingleInstance
WINAPI: GetParent User32.dll
WINAPI: GetClassNameA User32.dll

: GET-WCLASS \ ( hwnd -- a u ) \ Получить класс окна по его хэндлу. Работает и для дочерних окон
  256 PAD ROT GetClassNameA PAD SWAP
;

: TOP-PARENT-WINDOW   \ ( hwnd-child -- hwnd-parent )
  BEGIN DUP GetParent DUP WHILE
    NIP
  REPEAT
  DROP
;
Action:
GetForegroundWindow TOP-PARENT-WINDOW GET-WCLASS S" Shell_TrayWnd" COMPARE          \ Панель задач
GetForegroundWindow TOP-PARENT-WINDOW GET-WCLASS S" Progman" COMPARE AND            \ Рабочий стол
IF GetForegroundWindow N>S WIN-TO-TRAY THEN
)#
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Ограничить WIN-TO-TRAY

Postby SeMa » Fri, 26 Apr 2013, 10:47

VoidVolker
Спасибо, разобрался.
Сделал проще (не знаю, насколько критично):
Code: Select all
#( Minimize2Tray
WatchHotKey: "^`"
Rule: S" Shell_TrayWnd" WIN-ACTIVE? NOT S" Progman" WIN-ACTIVE? NOT AND ;
Action:
    GetForegroundWindow N>S WIN-TO-TRAY
)#
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина

Re: Ограничить WIN-TO-TRAY

Postby VoidVolker » Fri, 26 Apr 2013, 11:53

Ну, или так. А вот с точки зрения простоты как раз таки мой вариант проще - т.к. там сразу проверяется класс окна, в отличии от WIN-ACTIVE?, в котором еще куча дополнительных проверок и вычислений.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Ограничить WIN-TO-TRAY

Postby SeMa » Fri, 26 Apr 2013, 15:39

VoidVolker
Спасибо ещё раз!
Компьютер ─ устройство, разработанное для ускорения и автоматизации человеческих ошибок
User avatar
SeMa
 
Posts: 637
Joined: Fri, 15 Apr 2005, 12:49
Location: Украина


Return to nnCron forum (Russian)

Who is online

Users browsing this forum: No registered users and 6 guests