1

Тема: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN

Подскажите пожалуйста, какие изменения/дополнения следует ввести в ниже приведенный скрипт, чтобы скомпилированная программа на AHK действовала не по всей области Фотошопа, а только в определенной ее области?
А именно в области ClassNN: PSViewC33.
Данные из Window Spy:

>>>>>>>>>( Now Under Mouse Cursor )<<<<<<<<
ClassNN:    PSViewC33
Text:   
Color:
>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<

Скрипт:

#SingleInstance ignore
Run, Photoshop.exe, , Max UseErrorLevel
if ErrorLevel = ERROR
    {
    MsgBox При запуске программы Photoshop произошла ошибка. Пожалуйста, попробуйте снова.
    ExitApp
    }
WinWaitActive ahk_class Photoshop
SetTimer Check, 2000
Return

#IfWinActive ahk_class Photoshop
WheelDown::Send, {)} 
WheelUp::Send, {(} 
MButton & WheelDown:: Send, {f}
MButton & WheelUp::Send, {n}

Check:
  IfWinNotExist ahk_class Photoshop
    {  
    ExitApp
    } 
Return

Заранее всех благодарю.

2

Re: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN


; AHK-L
#SingleInstance ignore
Run, Photoshop.exe, , Max UseErrorLevel
if ErrorLevel = ERROR
    {
    MsgBox При запуске программы Photoshop произошла ошибка. Пожалуйста, попробуйте снова.
    ExitApp
    }
WinWaitActive ahk_class Photoshop
SetTimer Check, 2000
Return

#If WinActive("ahk_class Photoshop") && SubWinClass("PSViewC33")
    WheelDown::Send, {)}
    WheelUp::Send, {(}
    MButton & WheelDown:: Send, {f}
    MButton & WheelUp::Send, {n}
#if
Check:
  IfWinNotExist ahk_class Photoshop
    {
    ExitApp
    }
Return

SubWinClass(nClassNN)
{
    MouseGetPos,,,, cClassNN
    return cClassNN == nClassNN
}

3 (изменено: Irbis, 2012-05-11 19:25:28)

Re: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN

Немного опередил

#SingleInstance ignore
Run, Photoshop.exe, , Max UseErrorLevel
if ErrorLevel = ERROR
    {
    MsgBox При запуске программы Photoshop произошла ошибка. Пожалуйста, попробуйте снова.
    ExitApp
    }
WinWaitActive ahk_class Photoshop
SetTimer Check, 2000
Return

#IfWinActive ahk_class Photoshop
WheelDown:: Send % ok() ? "{)}" : "{click WD}"
WheelUp:: Send % ok() ? "{(}" : "{click WU}"
MButton & WheelDown:: Send  % ok() ? "{f}" : "{click M down}{click WD}{click M up}"
MButton & WheelUp:: Send  % ok() ? "{n}" : "{click M down}{click WU}{click M up}"
#IfWinActive

ok()
{
   MouseGetPos,,,,ctrl
   return (ctrl = "PSViewC33")
}

Check:
  IfWinNotExist ahk_class Photoshop
    ExitApp
Return

4

Re: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN

Обе версии работают!!!
Благодарю Вас:)

5

Re: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN

Протестировал скрипт, всё работает пока открыта только одна вкладка в фотошопе, потом нет. Оказалось что значение "PSViewC33" изменяется при открытие последующих вкладок. Например, если открыта только одна вкладка, то значением рабочей области фотошопа будет являться  "PSViewC33", если два, то "PSViewC34", если три, то "PSViewC35" и т. д. Как быть?

6 (изменено: creature.ws, 2012-05-12 22:41:45)

Re: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN

Например, изменить:

; AHK-L
#SingleInstance ignore
Run, Photoshop.exe, , Max UseErrorLevel
if ErrorLevel = ERROR
    {
    MsgBox При запуске программы Photoshop произошла ошибка. Пожалуйста, попробуйте снова.
    ExitApp
    }
WinWaitActive ahk_class Photoshop
SetTimer Check, 2000
Return
 
#If WinActive("ahk_class Photoshop") && SubWinClass()
    WheelDown::Send, {)}
    WheelUp::Send, {(}
    MButton & WheelDown:: Send, {f}
    MButton & WheelUp::Send, {n}
#if
Check:
  IfWinNotExist ahk_class Photoshop
    {
    ExitApp
    }
Return
 
SubWinClass()
{
    MouseGetPos,,,, ClassNN
    return ClassNN ~= "PSViewC3"
}

7

Re: AHK: Работа скрипта AHK только в опред-ной области программы - ClassNN

creature.ws пишет:

Например, изменить:

Ура!!! Заработало!!!
Спасибо, добрый человек:)