Mac OS X Leopard有一个名为Spaces的虚拟桌面实现.我想以编程方式检测用户当前所在的空间.
可可是最好的,但如果没有别的办法,AppleScript是可以接受的.
我已经看过几个AppleScript实现,但他们使用的技术在生产代码中使用似乎有点过于苛刻(一个依赖于导致错误,然后解析错误消息以获取当前空间,另一个则查询Spaces菜单GUI)
当试图加载iTunes XML/plist文件时,我得到"内部表溢出".在谷歌搜索之后,看起来Applescript的内存不足.该文件在磁盘上是18兆,因此在较大的一面,它应该仍然适用于2台演出的Mac.
我该如何解决这个问题?
显然,由于它是由iTunes创建的,我无法控制它的产生.
更新:相关代码段:
tell application "System Events"
tell property list file (itunes_xml_file as string)
tell contents
set my_tracks to value of property list item "Tracks"
repeat with t in items of my_tracks
Run Code Online (Sandbox Code Playgroud) 我所知道的关于AppleScript的一切我自学了,并且想知道我是否错过了任何很酷的功能.我知道你可以让计算机与应用程序通信并控制应用程序,但它还有什么可以做的,或者是时候转向使用新语言了吗?
我可以使用以下AppleScript打开终端选项卡:
tell application "Terminal"
set myTab to do script "exec sleep 1"
get myTab
end tell
Run Code Online (Sandbox Code Playgroud)
这将返回一个字符串,如:tab 1 of window id 3263 of application "Terminal".这很好,我可以看到窗口ID 3263和标签号1(虽然我不知道如何查询myTab只获取这些值).
在Cocoa ScriptingBridge中,我可以这样做:
SBApplication *terminal;
SBObject *tab;
terminal = [SBApplication applicationWithBundleIdentifier:@"com.apple.terminal"]
tab = [terminal doScript:@"exec sleep 1" in:nil]
Run Code Online (Sandbox Code Playgroud)
如何从选项卡对象中获取窗口ID和选项卡编号?
编辑2009/4/27 - 为什么?
为了回答我为什么要这样做 - 我在终端窗口中打开一个命令(如上所述),然后我回到了tab对象.但是我想移动/调整此窗口的大小,因此我需要访问选项卡的"窗口"对象.
我正在使用Objective-C(实际上,从Perl桥接的Objective-C),并且希望坚持使用标准的OS组件,因此我相信我只能使用NSAppleScript和ScriptingBridge框架(所有perl applescript模块都打破了64位除碳).我会尝试NSAppleScript,但处理返回的值似乎是一个黑暗的艺术.
我目前的解决方案是获取选项卡对象的TTY(保证唯一)并枚举每个窗口的每个选项卡,直到找到包含选项卡的窗口.我认为这不是最好的方法(肯定不是很快!).
编辑2009/4/30 - 解决方案
根据下面" has " 的建议,我冒了一个NSAppleEventDescriptor API.最初,我只能通过NSAppleScript的executeAndReturnError()调用来实现这一目标.但是我发现NSAppleScript比ScriptingBridge慢得多.
使用后ClassDump提取一些更SBObject电话,我发现无证 …
在以前的OS X版本(10.6之前的版本)中,可以通过applescript(“ Applescript Studio”)中的“ call method”命令来调用Cocoa方法。例如,这种方式:
“ Applescript编辑器”(10.6)中的脚本解释器不理解命令“ call method”。-“ Applescript编辑器”(10.6)是否等效?
set theURL to "http://www.apple.com"
set URLWithString to (call method "stringByAddingPercentEscapesUsingEncoding:" of theURL with parameter 30)
我的Applescript和Python脚本位于当前工作目录中.现在我需要使用shell命令从applescript中调用名为test.py的Python脚本和admin权限.
Applescript中的这段代码给出了pwd
tell application "Finder" to get folder of (path to me) as Unicode text
set presentDir to POSIX path of result
Run Code Online (Sandbox Code Playgroud)
Applescript中的这段代码手动调用Applescript中的python脚本
do shell script "/Users/mymac/Documents/'Microsoft User Data'/test.py"
Run Code Online (Sandbox Code Playgroud)
如何将presentDir与Admin权限一起添加到此命令?
编辑和更新:
set py to "test.py "
set calldir to workingDir & py
do shell script calldir
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误
error "sh: /Users/mymac/Documents/Microsoft: No such file or directory" number 127
Run Code Online (Sandbox Code Playgroud)
但显示对话框calldir显示
/Users/mymac/Documents/Microsoft User Data/test.py
Run Code Online (Sandbox Code Playgroud)
原因:
由于空间的原因,它在shell脚本命令中的'Microsoft'一词后被打破了.
我想制作一个AppleScript来自动完成在MacBook Pro Retina上切换分辨率的任务.
在互联网上搜索"applescript系统首选项",我遇到了一个显示某些偏好的页面.作为新的缩放分辨率,它没有记录.
这给AppleScript带来了一个更大的问题(请注意,除了复制粘贴我从未真正编写过的东西).例如,告诉我的文档在哪里,系统首选项对象实际上被称为"系统首选项",它具有名为"窗格"的对象,它们具有一个id,并且公开id是"com.apple.preference" .暴露"?
看起来每个程序都必须有某种"秘密"文档,它们必须是巨大的,映射所有对象层次结构和可能的操作.最后,AppleScript核心是最小的,你所做的就是操纵这些程序.但他们在哪里记录?
我是applemans的新手,我正在尝试自动化一个进程,但是当目录中有空格时,如何通过脚本更改目录?我的命令应该是正确的但语法错误会不断弹出:
Expected “"” but found unknown token.
Run Code Online (Sandbox Code Playgroud)
这是我的脚本:
tell application "Terminal"
activate
do script "cd ~/Pictures/iPhoto\ Library"
end tell
Run Code Online (Sandbox Code Playgroud)
我不明白哪里错了.它在我的终端上工作正常.
谢谢一群人!!
更新:这个效果最好!!
# surround in single quotes
tell application "Terminal"
activate
do script "cd '/Users/username/Pictures/iPhoto Library'"
end tell
Run Code Online (Sandbox Code Playgroud) 我需要一个applescript才能以全屏方式打开Safari,以隐藏特立独行者上的工具栏。
听起来很简单,但事实并非如此!
我需要打开野生动物园,然后在全屏模式下打开google,然后隐藏工具栏。
它与下面的示例等效,但对于野生动物园
告诉应用程序“ Google Chrome浏览器”的打开位置“ http://internet.ceo.wa.edu.au/Pages/default.aspx ”结束告诉
使用{command down,shift down} end tell告诉应用程序“ Google Chrome”激活告诉应用程序“系统事件”按键“ f”
我正在尝试设置它,以便在我使用applescript打开我的插图文件时没有用户交互,但标准:
tell application id "com.adobe.Illustrator"
activate
set user interaction level to never interact
open theFile without dialogs
Run Code Online (Sandbox Code Playgroud)
不适用于此插件我安装了检查白色套印.如果它取决于我,我只是卸载插件,但它是一个工作电脑.
我还尝试使用以下命令自动点击按钮(在Tim Joe的帮助下):
try
tell application "System Events"
tell process "Finder"
click button "OK" of window "Adobe Illustrator"
end tell
end tell
end try
Run Code Online (Sandbox Code Playgroud)
我试过了
tell application "System Events"
tell process "Adobe Illustrator"
keystroke return
end tell
end tell
Run Code Online (Sandbox Code Playgroud)
有谁知道解决这个问题的方法?
以下是目前的完整代码:
set saveLocation to ((path to desktop) as string) --place to save the files
set theFile to choose file with prompt "Choose the …Run Code Online (Sandbox Code Playgroud) applescript ×10
macos ×5
cocoa ×3
appleevents ×1
iphoto ×1
objective-c ×1
plugins ×1
python ×1
safari ×1
shell ×1
terminal ×1