AppleScript在脚本编辑器中工作,但不作为应用程序
我对编程相当陌生,尤其是AppleScript。我为情人节写了一个简单的脚本,从iTunes播放一首歌,然后在Safari中打开一个flash动画文件。当我在ScriptEditor中运行脚本时,一切正常,但当我作为独立应用程序导出时,它在启用全屏模式的命令处失败。我假设这是系统事件的问题。很明显,应用程序一直工作到最后,但在击键命令下,我听到一个警报声,窗口保持原样 我正在运行约塞米蒂,并完全更新 理想情况下,我想在Google Chrome中打开该文件以利用演示模式,但我甚至无法让Chrome打开该文件 谢谢你的建议!代码如下:AppleScript在脚本编辑器中工作,但不作为应用程序,applescript,fullscreen,systemevent,Applescript,Fullscreen,Systemevent,我对编程相当陌生,尤其是AppleScript。我为情人节写了一个简单的脚本,从iTunes播放一首歌,然后在Safari中打开一个flash动画文件。当我在ScriptEditor中运行脚本时,一切正常,但当我作为独立应用程序导出时,它在启用全屏模式的命令处失败。我假设这是系统事件的问题。很明显,应用程序一直工作到最后,但在击键命令下,我听到一个警报声,窗口保持原样 我正在运行约塞米蒂,并完全更新 理想情况下,我想在Google Chrome中打开该文件以利用演示模式,但我甚至无法让Chrom
tell application "Finder"
set visible of every process whose visible is true and name is not "Finder" to false
close every window
end tell
set volume output volume 75
tell application "iTunes"
set currentVolume to sound volume
if player state is playing then
stop
back track
end if
play track "The Promise"
set player position to 6
end tell
delay 4
tell application "Safari"
activate
if (count of windows) is 0 then -- Remove "if" statement if you don't want to make a new window if there is none
make new window at front
end if
open (POSIX path of (path to home folder)) & "/Desktop/beMine/beMine.swf"
tell application "System Events"
tell process "Safari" to keystroke "f" using {command down, control down}
end tell
end tell
您很可能需要允许独立应用程序使用系统事件。在某些时候,您需要为脚本编辑器执行此操作;你需要为你的独立应用程序做同样的事情 您将在系统首选项中的“安全与隐私”下找到该选项,然后是“隐私”,然后是“可访问性”。将有一个应用程序列表,您的应用程序可能在其中列出,但没有选中“允许下面的应用程序控制您的计算机” 您可能需要使用“+”按钮将应用程序添加到列表中 我已经验证了我可以使用这个简单的脚本使Safari全屏显示;如果应用程序在可访问性下被授予权限,它将工作,如果没有,它将自动失败
tell application "Safari"
activate
end tell
tell application "System Events"
tell process "Safari" to keystroke "f" using {command down, control down}
end tell
这是约塞米蒂,MacOSX10.10;在Mac OS X的其他版本中可能会有所不同。我同意Jerry Stratton的评论,即这可能是一个可访问性问题。但是,也可能是您在Safari准备接受之前发出了击键命令。如果它正在打开一个文件,那么它可能正忙,并且错过了击键命令 另外,我会将系统事件代码移到Safari代码之外,并且只告诉系统事件,而不是Safari进程,以执行击键命令。尝试将此作为Safari和系统事件部分 注意:我也无法让Chrome打开文件
tell application "Safari"
activate
if (count of windows) is 0 then -- Remove "if" statement if you don't want to make a new window if there is none
make new window at front
end if
open (POSIX path of (path to home folder)) & "/Desktop/beMine/beMine.swf"
end tell
tell application "Safari" to activate
delay 1
tell application "System Events"
keystroke "f" using {command down, control down}
end tell
下面是一个特别好的方法,可以查看应用程序是否被批准用于UI脚本:。除此之外,如果一个应用程序试图使另一个应用程序全屏显示,这可能是一个问题?这个解决方案对我很有效。我想知道的是,为什么脚本作为应用程序运行时需要延迟,而不是在脚本编辑器中?很难说为什么。这完全取决于在任何给定点上您的计算机活动水平。无论何时编写gui脚本,您都应该在测试时使用延迟,然后在优化时继续降低延迟时间,直到它们尽可能小而不会导致错误。很高兴这对你有用。祝你好运