我想在过去一年半的时间里,在尝试Cocoa和Cocoa Touch开发时,我一直在努力让Xcode支持一种关键的宏来处理这个特定的编码场景......
我经常发现自己不知道在键入新的代码行时有多少消息发送链接在一起.例如,我可能会输入这个...(管道字符代表光标位置)
someVariable = [someObject someMessage]|
Run Code Online (Sandbox Code Playgroud)
...然后我意识到我需要从返回的对象链接一个消息(因为消息传递nil在ObjC中是安全的,这是一个常见的习惯用法.)所以我需要改变代码行看起来像这样......
someVariable = [[someObject someMessage] |
Run Code Online (Sandbox Code Playgroud)
最大的问题是必须在括号对之前添加一个左括号,我需要在每次需要时使用鼠标或重复键敲击.在浪费了大约40个小时后,试图找到任何类型的预先存在的键盘快捷方式或脚本(我调查了Perl,shell脚本,甚至是我的谷歌搜索中的一些emacs Lisp脚本.),我把这个怪物砍在了一起在AppleScript中,所有事情......
tell application "System Events"
delay 0.2
set editMenu to menu "Edit" of menu bar item "Edit" in menu bar 1 of
process "Xcode"
set kLeftArrowKey to 123
key code kLeftArrowKey
set theMenu to menu item "Balance" in menu "Format" of menu item
"Format" in editMenu
click theMenu
set theMenu to menu item "Bracket Expression" in menu "Objective C"
of menu item "Objective C" in menu …Run Code Online (Sandbox Code Playgroud) 如何通过AppleScript在Mac OS X词典中查找单词?
我有一个复杂的AppleScript,出于某些原因必须作为单行命令执行.我的脚本看起来像:
tell application "Finder"
tell disk "'myDiskName'"
open
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
set the bounds of container window to {400, 100, 968, 421}
close
open
eject
end tell
end tell
Run Code Online (Sandbox Code Playgroud)
我使用终端执行脚本:
echo '<SCRIPT>' | osascript
Run Code Online (Sandbox Code Playgroud)
其中是上面的多行脚本 - 并且工作得非常好.现在,更具体地说,我希望使用ant-task运行此脚本,例如:
<exec executable="echo">
<arg line="'<SCRIPT>' | osascript" />
</exec>
Run Code Online (Sandbox Code Playgroud)
由于是多行的,它会以某种方式被忽略/不被执行,但它也不会抛出异常.我看到两个解决方案:一个是单行命令,更可取,或者是一个被调用的独立的applecipt.事情就是这样:上面的脚本需要一些动态变量,这些变量必须在运行时从antscript生成 - 因此动态创建脚本可能不是一个选项.
我正在设计一个应用程序,允许用户在我的应用程序崩溃时通过电子邮件向我发送崩溃报告.我想让Mac Mail在计算机上运行,当收到电子邮件时,会运行automator脚本/ AppleScript来处理电子邮件正文的内容.
我已经在python脚本中完成了整个解析/处理,除了我必须手动将电子邮件的内容复制到文件中然后在该文件上运行我的解析器.
设置它的最佳方法是什么,以便将电子邮件的内容推送到我的解析脚本中?
非常感谢!
如何使用Chrome中的AppleScript在Background中打开新选项卡.打开一个标签看起来很容易,但我找不到可以在后台打开标签的内容,这意味着活动标签保持不变.
当您从笔记本电脑上拔下具有更高分辨率的外接显示器时,窗口大部分会保留其宽度,但是它们的大小会被剪切到macbook屏幕的(较小)高度.当您重新插入显示器时,它们的尺寸仍然非常小.
我的问题是:有没有什么方法可以迭代所有打开的窗口,保存它们的大小,并在监视器重新插入后恢复它们?
当我将外接显示器插入Macbook并将其唤醒时,显示器通常是错误的分辨率.在Mountain Lion之前,我能够运行以下AppleScript来检测显示:
tell application "System Preferences" to activate
tell application "System Events"
tell process "System Preferences"
click menu item "Displays" of menu "View" of menu bar 1
tell button "Detect Displays" of window 1 to click
end tell
end tell
tell application "System Preferences" to quit
Run Code Online (Sandbox Code Playgroud)
但是,使用10.8时,"检测显示"按钮要求您按Option键显示它,因此脚本会出现以下错误:
错误"系统事件出错:无法获取按钮\"检测进程"系统首选项"的窗口1的"显示"." 处理"系统偏好设置"窗口1的"检测显示"按钮的编号-1728
我的申请技巧不够简单,我的谷歌也没有让我偶然发现答案.
如何修改脚本以单击现在隐藏的检测显示按钮?
我的一个AppleScript遇到问题。我正在尝试创建一个applescript,以在Mac唤醒或屏保停止后在Mac安全面板中选中/取消选中调用密码的复选框。我将其与proximity.app一起使用,其想法是当我回到家并且手机在范围内时,proximity.app会删除密码,但是当我不在范围内时,它将密码放回去。嗯,由于Mountain Lion中采用了新的安全策略,因此我不得不使用UI脚本来执行此操作。
因此,超出范围时有代码:
tell application "System Preferences"
set current pane to pane id "com.apple.preference.security"
tell application "System Events"
tell process "System Preferences"
tell first window
tell first tab group
click radio button 1
if not 1 then click checkbox 1
click menu item 6 of menu of pop up button 1
end tell
end tell
end tell
end tell
quit
Run Code Online (Sandbox Code Playgroud)
结束告诉
并且在范围内时:
tell application "System Preferences"
set current pane to pane id "com.apple.preference.security"
tell application "System Events"
tell process "System …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个AppleScript,其中包括获取Firefox中每个打开的网页的URL.
在Safari(和Chrome)中,这非常简单:
tell application "Safari" to return URL of every tab in every window
Run Code Online (Sandbox Code Playgroud)
但是,在我看来,Firefox没有提供真正的AppleScript支持,例如获取任何选项卡或窗口的URL.当我将"Firefox"和"AppleScript"这两个术语放在一起时,我主要得到Firefox错误请求,要求恢复AppleScript支持,最后在2010年或2011年更新(像这样和这个).
我是否正确地想,Firefox不再提供任何适当的AppleScript支持?我意识到有一些半解决方法,比如在AppleScript中模拟键命令,但那些对我来说并不实用.
我有一个简短而甜蜜的程序,用AppleScript输出我的内部和外部ip.
这是Applescript代码:
set inIP to IPv4 address of (get system info)
set exIP to (do shell script "curl ipecho.net/plain")
display dialog "Internal: " & inIP & "
External: " & exIP
Run Code Online (Sandbox Code Playgroud)
我希望它能在后台不断更新,最好不要像现在那样在显示对话框功能中更新.
我不希望显示对话框不断弹出,所以我正在查找示例,在菜单栏中显示IP .
我不知道这是否可以与Applescript一起使用
applescript ×10
macos ×5
cocoa ×2
ant ×1
automator ×1
checkbox ×1
cocoa-touch ×1
desktop ×1
dialog ×1
dictionary ×1
firefox ×1
ip ×1
menubar ×1
objective-c ×1
shell ×1
xcode ×1