Плагин windows.spf

Файл: windows.spf
Автор: Nicholas Nemtsev, Valery Kondakoff
Описание: Дополнительные слова, позволяющие отслеживать скрытые окна (например, те, к которым применялась команда WIN-HIDE:), минимизированные окна и topmost-окна (которые отображаются поверх остальных окон). Управление "прозрачностью" окон (Win2000/XP). Отслеживание "зависших" окон (окон, которые перестали отвечать на запросы пользователя).

Новые слова:


<window_handle> MINIMIZED?

Возвращает TRUE только если указанное окно сейчас минимизировано.

Пример:

\ восстановить минимизированное окно
WIN-EXIST: "*Internet Explorer"
    IF 
        WIN-HWND MINIMIZED?
        IF
            WIN-RESTORE: "*Internet Explorer"
        THEN
    THEN

<window_handle> TOPMOST?

Возвращает TRUE если указанное окно является topmost-окном (отображается поверх остальных окон).

Пример:

#( test_topmost
\ по хоткею делаем указанное окно topmost/notopmost
WatchHotKey: "$q"
Action:
    WIN-EXIST: "*Notepad*"
    IF
        WIN-HWND TOPMOST? 
        IF
            WIN-NOTOPMOST: "*Notepad*"
        ELSE
            WIN-TOPMOST: "*Notepad*"
        THEN
    THEN
)#

<window_handle> VISIBLE?

Возвращает FALSE, если к окну применялась команда WIN-HIDE или окно было убрано в системный трей. Во всех остальных случаях возвращает TRUE.

Пример:

\ показать окно, если оно было скрыто
WIN-EXIST: "*Internet Explorer"
    IF 
        WIN-HWND VISIBLE? 0=
        IF
            WIN-SHOW: "*Internet Explorer"
        THEN
    THEN

WIN-NOT-RESPOND: "win_pattern"

Позволяет отслеживать "зависшие" окна (окна, которые перестали отвечать на запросы пользователя). Возвращает флаг TRUE (1), если операционная система считает окно "зависшим" и флаг FALSE (0) , если окно корректно отвечает на запросы. Протестировать работу слова WIN-NOT-RESPOND: вы можете, например, с помощью крохотной утилиты HungTest, которая имитирует "зависшее" окно.

Пример:

#( test_not_responding
NoActive
Action:
WIN-NOT-RESPOND: "Hanging application"
    IF
        MSG: "Not responding!"
    ELSE
        MSG: "Responding!"
    THEN
)#

Существует также постфиксный вариант этого слова:

S" *Notepad" WIN-NOT-RESPOND

WIN-TRANSPARENCY: "win_pattern" <transparency_level>

Позволяет управлять "прозрачностью" окон, подпадающих под указанную маску (кроме консольных окон). Уровень прозрачности задается в числах от 0 (окно непрозрачно, флаг LAYERED снимается) до 255 (окно абсолютно прозрачно).
Перезапуск окна отменяет действие слова WIN-TRANSPARENCY:.

Слово WIN-TRANSPARENCY: работает только в операционных системах, поддерживающих "прозрачность" окон: Win2000/XP. Обратите, пожалуйста, внимание: установка второго сервис-пака на операционную систему Windows XP препятствует корректной работе слова WIN-TRANSPARENCY:, если nnCron запущен не обычным приложением, а сервисом.

Пример:

\ делаем окно Notepad полупрозрачным:
WIN-TRANSPARENCY: "*Notepad" 50
\ делаем окно Notepad абсолютно прозрачным,
\ окно все еще находится на экране, но его уже не видно:
WIN-TRANSPARENCY: "*Notepad" 255
\ отменяем действие WIN-TRANSPARENCY:
WIN-TRANSPARENCY: "*Notepad" 0

Существует также постфиксный вариант этого слова:

S" *Notepad" 50 WIN-TRANSPARENCY