我正在尝试做一些基本的事情。我只想打开一个新窗口,然后在该窗口中使用 OSX Yosemite 的新 javascript 桥打开 2 个选项卡。我找不到显示如何执行此操作的文档:
ObjC.import("Cocoa");
chrome = Application("Google Chrome");
chrome.includeStandardAdditions = true
chrome.open("test1tab.com");
chrome.open("test2tab.com");
Run Code Online (Sandbox Code Playgroud) javascript macos applescript osx-yosemite javascript-automation
我有一个简单的计算器代码,我想在其中包含平方根。我对 applescript 比较陌生,我不知道如何操作。可能有点菜鸟,但还是谢谢你!
我正在尝试在 Cocoa 应用程序中从 NSAppleScript 编写 iTunes 脚本,以便将文件添加到库中。
在我的权利文件中,我添加了以下内容:
<key>com.apple.security.scripting-targets</key>
<dict>
<key>com.apple.itunes</key>
<array>
<string>com.apple.itunes.library.read-write</string>
</array>
</dict>
Run Code Online (Sandbox Code Playgroud)
然后我这样调用 AppleScript:
var error: NSDictionary? = nil
let appleScript = NSAppleScript(source: "tell application \"iTunes\" to add (POSIX file \"\(path)\") to library playlist 1")
let result = appleScript?.executeAndReturnError(&error)
Run Code Online (Sandbox Code Playgroud)
但它失败并出现错误-10004:iTunes got an error: A privilege violation occurred.
itunes我尝试以两种方式(和)大写 iTunes iTunes,但似乎没有任何效果。我还尝试在读写权利之上添加read权利。最后,我尝试添加对用户音乐文件夹(存储 iTunes 库的位置)的读写访问权限,但这也没有帮助。
为了编写 iTunes 脚本,是否还需要我不知道的其他权利?
我在搜索解决方案时找到了此链接(链接),但它要求用户在其文件夹中选择一个特定文件夹,Library以授予应用程序用户选择的文件访问权限,然后要求脚本位于一个单独的文件中,该文件为 2对于我想做的事情来说太多了。我不信任用户对脚本文件的管理,并且我不需要 1 行 AppleScript 代码的文件。据我了解,另一个缺点NSUserAppleScriptTask是您无法在多个调用中保留脚本的状态,这对我来说不是问题,但对其他人来说可能是问题。
谢谢
我从其他问题中了解到应用程序和流程之间的区别。但我希望我能对这段代码中发生的事情得到一些澄清。
(application processes whose visible is true)
Run Code Online (Sandbox Code Playgroud)
“应用程序进程”是指由应用程序启动的所有进程吗?这是否意味着有些进程不是由应用程序启动的?或者我可以将其切换到“进程”并取出“应用程序”吗?
免责声明:我对此很陌生。
我有一个使用 count 命令检索到的数字,现在我想使用“do shell script echo”将其输出到 .txt 文件。
到目前为止我的代码:
tell application "Things3"
set todayToDos to to dos of list "Today"
count todayToDos
do shell script "echo todayToDos > /Users/nonefirstnonelast/Desktop/Things.txt"
end tell
Run Code Online (Sandbox Code Playgroud)
控制台输出为:
""
without do shell script "echo todayToDos > /Users/nonefirstnonelast/Desktop/Things.txt" line it is: 27
Run Code Online (Sandbox Code Playgroud) 我只能在 Google 上找到一些具有特定音乐应用程序(如 itunes、spotify 等)的 applescript 来获取当前播放的歌曲。
但是现在我使用的是网易音乐,不支持applescript控制,我想知道是否有任何通用的方法可以通过mac媒体中心获取当前播放的歌曲信息?
Applescript 和其他命令行工具都可以。

我正在开发一个可与应用程序窗口一起使用的 macOS 应用程序。我现在无法承担的目标是检索所有打开的应用程序窗口的列表,它看起来像这样(JSON 示例):
[
{
"appName": "Google Chrome",
"appWindows": [
{
"size": {"x": 100, "y": 100},
"position": {"height": 100, "width": 100},
"desktopNumber": 2
},
{
"size": {"x": 100, "y": 100},
"position": {"height": 100, "width": 100},
"desktopNumber": 3
}
]
},
{
"appName": "Telegram",
"appWindows": [
{
// full screen app, so has a separate desktop number
"size": {"x": 1080, "y": 1920},
"position": {"height": 0, "width": 0},
"desktopNumber": 4
}
]
}
]
Run Code Online (Sandbox Code Playgroud)
每个应用程序都有一系列打开的窗口以及打开它的桌面号码。全尺寸应用程序占用单独的桌面空间,因此它应该有一个单独的桌面编号。
我知道如何使用 获取打开的窗口列表CGWindowListCopyWindowInfo,但我找不到找到桌面号码或确定哪个窗口可见或不可见的方法。
如果不可能用 Swift …
我觉得AppleScript比AutoIt更受尊重.我认为这是你可以放在简历上的东西,而AutoIt则不是.是这样的吗?这是为什么?使用AutoIt,您可以自动执行任何操作.这是AppleScript的情况吗?使用AppleScript,您可以像在网页中的图像一样检测屏幕上的任意图像吗?
我写了一个小脚本在远程机器上打开Safari:
tell application "Safari"
activate
set URL of first document to "http://www.stackoverflow.com/"
end tell
Run Code Online (Sandbox Code Playgroud)
我会远程运行applescript,因为我可以通过SSH连接.
但是,如果机器没有物理登录(即,我没有达到它并输入我的详细信息),没有任何反应.注意,我仍然可以使用SSH连接到机器,因此仍然可以运行脚本.
那么我可以使用applescript远程登录机器吗?
我需要做一些全屏应用程序,这通常不是问题.现在的问题是我需要拥有用户的桌面,但没有图标,作为我的全屏窗口的背景,就像10.7中的Launchpad一样.我在AppleScript中引用了桌面背景:
tell application "Finder"
set a to desktop picture
end tell
Run Code Online (Sandbox Code Playgroud)
这给了我这样的东西:document file "100930-F-7910D-001.jpg" of folder "Pictures" of folder "Fighter Jet Stuff" of folder "Desktop" of folder "tristan" of folder "Users" of startup disk of application "Finder"我无法想象进入常规路径.
我尝试过,set a to desktop picture as POSIX path但是这会引起我的注意.知道如何在Cocoa中做到这一点,使用上面的Applescript获取路径,甚至更好,没有Applescript?我不想依赖可能存储此信息的任何plist的特定格式,因为它有可能在以后破坏.我想可能有一个我不知道的框架......
applescript ×10
macos ×4
cocoa ×2
swift ×2
autoit ×1
calculator ×1
javascript ×1
osx-yosemite ×1
scripting ×1
square-root ×1
syntax ×1