Показано с 1 по 10 из 126

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #7
    Гуру Аватар для ashu
    Регистрация
    29.01.2008
    Возраст
    53
    Сообщений
    1,161
    Вес репутации
    594

    По умолчанию Мой новый AHK-скрипт

    Новая версия скрипта avc_control.ahk

    Выполняемые скриптом задачи:

    1. Иногда при выходе из спящего режима RR не запускает автоматически WinAmp на воспроизведение. Подозреваю, что это связано с задержками, вызванными моим решением проблемы долгой инициализации звуковой usb-карты - перезапуском WinAmp'а. Скрипт avc_control.ahk отслеживает перезапуск WinAmp'а и посылает ему команду на начало воспроизведения.

    2. Как показало расследование, в моём компе есть некий глюк то ли программный - в дровах, то ли аппаратный - в материнке... Но так или иначе случаются проблемы с зависанием компа после выходы из спящего режима. Эти проблемы, как мне кажется, решены (описано в ветке моего проекта). Однако, редко, но после выхода из спящего режима случается проблема вылета по ошибке какой-то службы Windows. Причём, только тогда, когда запущен и работает СитиГид... Как выяснилось, вылетает служба Windows Audio. Забавно, но WinAmp при этом продолжает нормально работать. Скрипт avc_control.ahk обрабатывает эту ситуацию - скидывает окно сообщения об ошибке и перезапускает службу Windows Audio.

    3. В случае не планируемой перезагрузки компа (например, по кнопке питания или через reset) PowerStrip выкидывает окно с вопросом о восстановлении. На нём надо всего лишь нажать "Да", с чем успешно справляется утилитка от kolychev'а, но зачем запускать кучу прог, когда всё можно сделать силами того же скрипта avc_control.ahk?

    4. Обработка клавиатурных комбинаций, приходящих при нажатии штатных кнопок на консоли от avc_usb.exe - управление WinAmp'ом, снятие скриншота и передача горячих клавиш в PowerStrip для управлением гаммой "день/ночь" и показом/скрытием мышки.

    5. Имитация нажатия правой кнопки мышки

    Чтобы RR не путал WinAmp и KMPlayer, WinAmp через настройки RR запускается с идентификатором класса RRWinamp.

    Код:
    #NoTrayIcon             ; не отображать значок скрипта в трее
    #SingleInstance force   ; перезагрузить скрипт, если он уже запущен
    DetectHiddenWindows, On ; искать в скрытых окнах
    #NoEnv                  ; запрещаем имена переменных как у переменных окружения
    SendMode Input          ; ускоренный ввод
    
    WinAmpActive := 0 ; первоначально считаем, что WinAmp не запущен
    day := 1 ; гамма в положении "день"
    
    ; Вечный цикл обработки ситуаций
    Loop
    {
            If WinAmpActive = 0
            {
                    IfWinExist, ahk_class RRWinamp
                    {
    ; WinAmp не был запущен, а сейчас найден в списке окон
                            Sleep 2000 ; подождать 2 секунды пока WinAmp запускается
                            PostMessage, 0x111, 40045,,, ahk_class RRWinamp ; включить воспроизведение
                            WinAmpActive := 1 ; считаем WinAmp запущенным
                    }
            }
            Else
            {
                    IfWinNotExist, ahk_class RRWinamp
                    {
    ; Считали WinAmp запущенным, а сейчас не видим в списке окон
                            WinAmpActive := 0 ; считаем WinAmp не запущенным
                    }
            }
            IfWinExist, Меры предосторожности
            {
    ; Найдено стартовое окно восстановления PowerStrip'а
                    WinActivate
                    Send, Д ; нажимаем кнопку "Да"
            }
            IfWinExist, svchost.exe - Ошибка приложения
            {
    ; Скидываем полученную ошибку приложения (вероятнее всего служба Windows Audio)
                    WinActivate
                    Send, {Esc} ; посылаем нажатие клавиши Escape - нажатие кнопки Cancel на форме
                    Run, nircmd service restart AudioSrv,, Hide ; перезапускаем службу Windows Audio
            }
            Sleep 1000 ; спим 1 секунду и повторяем проверки
    }
    
    ; Транслируем нажатие кнопки на консоли в горячую клавиатурную комбинацию
    ; для PowerStrip'а - включение/выключение режима скрытия указателя мышки
    ^!+c::^!5
    
    ^!+b::RButton           ; имитация правой кнопки мышки
    
    ^!+a::                  ; делаем screenshot всего экрана
    RunWait, nircmd savescreenshot C:\PrScr.png,, Hide
    FileGetTime, OutputVar, C:\PrScr.png, C
    FileMove C:\PrScr.png, C:\Scrns\ss_%OutputVar%.png
    return
    
    ^!+e::                  ; переключаемся на следующий трек
    PostMessage, 0x111, 40048,,, ahk_class RRWinamp ; следующий трек
    return
    
    ^!+f::                  ; переключаемся на предыдущий трек
    PostMessage, 0x111, 40044,,, ahk_class RRWinamp ; предыдущий трек
    return
    
    ^!+h::                  ; кнопка воспроизведение/пауза
    SendMessage, 0x400,, 104,, ahk_class RRWinamp ; проверка воспроизведения
    If ErrorLevel = 0 ; если не воспроизводится, то...
            PostMessage, 0x111, 40045,,, ahk_class RRWinamp ; включить воспроизведение
    Else ; если воспроизводится, то...
            PostMessage, 0x111, 40046,,, ahk_class RRWinamp ; поставить на паузу
    return
    
    ^!+i::                  ; переключение гаммы "день/ночь" - посылаем комбинации в PowerStrip
    If(!day)
    {
            Send, ^!1 ; посылаем в PowerStrip - "включить дневной профиль"
            day := 1
    }
    Else
    {
            Send, ^!2 ; посылаем в PowerStrip - "включить ночной профиль"
            day := 0
    }
    return
    Последний раз редактировалось ashu; 07.11.2008 в 18:41.
    С уважением, Алексей
    Мой Prius NHW11

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •