Что нового

[Автоматизация] Настройка Кривые () в Фотошопе с помошью hotkey AutoIt

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik
Какая версия Photoshop у вас?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik
У меня всё работает.
Запустите этот код, и напишите те ошибки, которые возникнут.
Код:
Global $iEventError = 0

; Action который нужно запустить (название и действие)
Global $sActionName = "Resize", $sAction = "Action 1"

HotKeySet('{F5}', '_Curve')
HotKeySet('{F4}', '_Action')
HotKeySet('{ESC}', '_Exit')

; Точки кривой
Dim $aPoint1[2] = [0,16]
Dim $aPoint2[2] = [16,16]
Dim $aPoint3[2] = [128,128]
Dim $aPoint4[2] = [240,240]
Dim $aPoint5[2] = [255,240]

Global $aCurve[5] = [$aPoint1, $aPoint2, $aPoint3, $aPoint4, $aPoint5]

$oPS = ObjCreate("Photoshop.Application")
$oError = ObjEvent("AutoIt.Error","_PSObjErr")
$oActionDescriptor = ObjCreate("Photoshop.ActionDescriptor")

$oPS.BringToFront
$oPS.DisplayDialogs = 3

While 1
    Sleep(250)
WEnd

Func _Curve()
    If $oPS.Documents.Count > 0 Then
        $oActiveDoc = $oPS.ActiveDocument
        $oActiveLayer = $oActiveDoc.ActiveLayer
        $oActiveLayer.adjustCurves($aCurve)
    EndIf
EndFunc

Func _Action()
    $oPS.DisplayDialogs = 3
    $oPS.DoAction($sAction, $sActionName)
EndFunc

Func _Exit()
    
    $oActionDescriptor = 0
    $oError = 0
    $oPS = 0
    Exit
EndFunc

Func _PSObjErr()

	Msgbox(0,"Photoshop","We intercepted a COM Error !"      & @CRLF  & @CRLF & _
			 "err.description is: "    & @TAB & $oError.description    & @CRLF & _
			 "err.windescription:"     & @TAB & $oError.windescription & @CRLF & _
			 "err.number is: "         & @TAB & hex($oError.number,8)  & @CRLF & _
			 "err.lastdllerror is: "   & @TAB & $oError.lastdllerror   & @CRLF & _
			 "err.scriptline is: "     & @TAB & $oError.scriptline     & @CRLF & _
			 "err.source is: "         & @TAB & $oError.source         & @CRLF & _
			 "err.helpfile is: "       & @TAB & $oError.helpfile       & @CRLF & _
			 "err.helpcontext is: "    & @TAB & $oError.helpcontext _
			)
            
    Local $iErr = $oError.number
    If $iErr = 0 Then $iErr = -1
    $iEventError = $iErr
Endfunc
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Garrett
Код:
Func _PSObjErr()

    Msgbox(0,"Photoshop","We intercepted a COM Error !"      & @CRLF  & @CRLF & _
             "err.description is: "    & @TAB & $oError.description    & @CRLF & _
             "err.windescription:"     & @TAB & $oError.windescription & @CRLF & _
             "err.number is: "         & @TAB & hex($oError.number,8)  & @CRLF & _
             "err.lastdllerror is: "   & @TAB & $oError.lastdllerror   & @CRLF & _
             "err.scriptline is: "     & @TAB & $oError.scriptline     & @CRLF & _
             "err.source is: "         & @TAB & $oError.source         & @CRLF & _
             "err.helpfile is: "       & @TAB & $oError.helpfile       & @CRLF & _
             "err.helpcontext is: "    & @TAB & $oError.helpcontext _
            )
           
    Local $iErr = $oError.number
    If $iErr = 0 Then $iErr = -1
    $iEventError = $iErr
Endfunc

После запуска скрипта :
1.Фотошоп открылся выдал вот такие ошибки

1)Сразу после открытия
We intercepted a COM Error !
err.description is:
err.windescription: Недопустимая строка с указанием класса
err.number is: 800401F3
err.lastdllerror is: 14000
err.scriptline is : 21

2)После того как я удалил екшн
err.description is: Произошла общая ошибка Photoshop.
-Объект "Операция "Action 1" из набор "Resize"" в настояшее время недоступен.
err.windescription:
err.number is: 80020009
err.lastdllerror is: 0
err.scriptline is : 40
err.source is: Adobe Photoshop

2.Скрипт продолжал действовать
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
StarEdik [?]
-Объект "Операция "Action 1" из набор "Resize"" в настояшее время недоступен.
Сюда вы должны вписать свой Action, с которым вы будите работать!!!
Код:
Global $sActionName = "Resize", $sAction = "Action 1"

Resize это мой Action и у вас, его просто-напросто нет.

На счёт первой ошибки,
err.windescription: Недопустимая строка с указанием класса
такого быть не может, попробуйте переустановить Photoshop.
 
Автор
StarEdik

StarEdik

Новичок
Сообщения
365
Репутация
4
Garrett
Спасибо за редактирования скрипта . Теперь ошибок нет . Ещё раз благодарю. Хотя мой благодарность несколько запоздал
 
Верх