我为预览制作了一个脚本,它工作得很完美。它会打开图像,然后等待预览中的文档关闭。
之后我尝试用Photoshop做同样的事情,但它不能在那里工作:
tell application "Finder"
try
set appID to application file id "com.adobe.Photoshop"
--set appID to application file id "com.apple.Preview"
on error errMsg
set appID to 0
end try
end tell
tell application "Finder" to set appName to name of appID
tell application appName
run
activate
set fileHandle to open POSIX file pngFile as alias
repeat
-- exit repeat
try
get name of fileHandle
on error
exit repeat
end try
delay 1 -- delay in seconds
end repeat
end tell
display dialog "Document is closed now"
如果某个文件仍处于打开状态,那么任何想法会出现问题,甚至更好地检查Photoshop?
答案 0 :(得分:2)
如果你想打开文件并延迟文件在Photoshop中实际打开,那么你的代码就会遇到一些问题。首先,如果要按照你的想法工作,那么你的“退出重复”行是在错误的地方。它不应该在try块的“on error”部分。重复循环和try块的目的是等到你可以获得文件的名称而不会出现错误...意味着文件已打开...然后退出重复。所以你的重复循环应该是这样的......
repeat
try
get name of fileHandle
exit repeat
end try
delay 1 -- delay in seconds
end repeat
但是,您的代码中还有其他错误,因此即使使用该修复程序,它仍然无效。一个很大的错误是fileHandle。 Photoshop的open命令不会返回对文件的引用,因此当你“获取fileHandle的名称”时,无论什么都会出错,因为没有fileHandle。
以下是我编写代码的方法。你不需要任何Finder的东西,你当然不应该把Photoshop代码放在Finder代码中。无论如何,试试这个。我希望它有所帮助。
set filePath to (path to desktop as text) & "test.jpg"
set fileOpen to false
tell application id "com.adobe.Photoshop"
activate
open file filePath
set inTime to current date
repeat
try
set namesList to name of documents
if "test.jpg" is in namesList then
set fileOpen to true
exit repeat
end if
end try
if (current date) - inTime is greater than 10 then exit repeat
delay 1
end repeat
end tell
return fileOpen