擅长:python、mysql、java
<p>为了避免包括PyObjC在内的所有过时的所谓“糟糕”模块,您只需在脚本编辑器或脚本调试器(我的选择)中调试脚本,然后通过Popen使用osascript执行它。我更喜欢这样,这样我就可以确保应用程序实现的特性得到解决,并且脚本调试器有很好的调试和浏览工具。</p>
<p>例如:</p>
<pre><code>from subprocess import Popen, PIPE
def get_front_win_id():
"""
Get window id of front Chrome browser window
"""
script = '''
on run {}
set winID to 0
tell application "Google Chrome"
set winID to id of front window
return winID
end tell
end run
'''
args = []
p = Popen(['/usr/bin/osascript', '-'] + args,
stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate(script)
winID = stdout.strip()
return int(winID)
</code></pre>
<p>将列表中的参数传递给osascript,但它们必须是字符串,因此复杂的数据结构在封送和解封时可能会很乏味,但简单性是有代价的。为了简单起见,我省略了错误检查和异常处理/引发。坦斯塔法尔</p>