Код
from appscript import *
ps = app("Adobe Photoshop CS5")
ps.do_javascript
работает, если Photoshop еще не запущен.В этом случае он запускает Photoshop и находит метод do_javascript
.
Однако, если Photoshop уже запущен, этот код завершается ошибкой, за исключением
AttributeError: Unknown property, element or command: 'do_javascript'
Почему?
(Примечание: это код приложения Python, но у меня та же ошибка, с более загадочным сообщением, с чистым AppleScript. Ошибка 44:54: syntax error: Expected end of line but found identifier. (-2741)
.)
SIMBL вызывает проблему.Если я остановлю агента SIMBL, он будет работать.
Этот код от агента SIMBL вызывает проблему:
// Inject!
[app setSendMode:kAENoReply | kAENeverInteract | kAEDontRecord];
id injectReply = [app sendEvent:'SIMe' id:'load' parameters:0];
if (injectReply != nil) {
SIMBLLogNotice(@"unexpected injectReply: %@", injectReply);
}
(app
- это SBApplication
для Photoshop.)
Поскольку мне нужен агент SIMBL для работы, я не могу решить эту проблему.Поэтому мне нужно знать , почему это создает проблемы.
SIMBL.osax
определяет обработчик для кода SIMeload
:
<dict>
<key>Events</key>
<dict>
<key>SIMeload</key>
<dict>
<key>Handler</key>
<string>InjectEventHandler</string>
<key>ThreadSafe</key>
<false/>
<key>Context</key>
<string>Process</string>
</dict>
</dict>
</dict>
Это InjectEventHandler
в SIMBL.osax
:
// This is the handler function which is called when the send the AppleEvent 'SIMeload'.
// This is send from the SIMBL Agent in SIMBLAgent.m:injectSIMBL.
// See http://developer.apple.com/library/mac/#technotes/tn1164/_index.html "Scripting Additions for Mac OS X".
// See http://developer.apple.com/legacy/mac/library/documentation/AppleScript/Conceptual/AppleEvents/AppleEvents.pdf "Apple Event Programming Guide".
OSErr pascal InjectEventHandler(const AppleEvent *ev, AppleEvent *reply, SInt32 refcon)
{
OSErr resultCode = noErr;
//SIMBLLogInfo(@"load SIMBL plugins");
//[SIMBL installPlugins];
return resultCode;
}
Обратите внимание, что у меня также есть проблема с закомментированным кодом (как опубликовано).Это означает, что обработчик событий SIMBL фактически ничего не делает.И это все еще создает проблему.
Так что либо в пакете / обработчике OSAX что-то не так, либо что-то не так в отправке AppleEvent.