标签: applescript

Applescript问题 - 将曲目添加到播放列表

说真的,我甚至不好意思这个问题.

我有一个Applescript应该建立一堆整张专辑的播放列表.一切正常,除了实际将曲目添加到播放列表.这是相关的代码:

repeat with theAlbum in randAlbums
    set these_tracks to (tracks of library playlist 1 whose album is theAlbum)
    repeat with the_track in these_tracks
        add the_track to playlist thePlaylist  (* doesn't work *)
    end repeat
end repeat
Run Code Online (Sandbox Code Playgroud)

我得到的错误是"iTunes收到错误:发生描述符类型不匹配."

randAlbums是唯一专辑名称的列表,thePlaylist是在脚本中先前创建的播放列表.

我一直在抨击这个感觉就像一个星期,我无法弄明白.在此先感谢您提供的任何帮助:)

macos applescript

7
推荐指数
1
解决办法
4991
查看次数

如何使用AppleScript启动/停止Internet共享

我没有Wi-Fi路由器,因此在家时我需要将笔记本电脑变成Wi-Fi信号源,这样我和我的伙伴都可以访问互联网.

然而,在我在咖啡店工作并需要使用他们的Wi-Fi的日子里.

我正在运行Snow Leopard,我发现不断地关闭和开启,首先是Internet共享,然后是我的Wi-Fi,这非常麻烦.

快速'n'脏AppleScript解决方案的想法?

applescript

7
推荐指数
1
解决办法
6288
查看次数

小飞贼通过苹果脚本关闭网络监控(远程登录)

嗨,我试图通过命令行停止/启动 Little snitche 的网络监视器。

我试图通过 applescript 做到这一点

tell application "System Events"
    tell application "Little Snitch Configuration" to activate
    keystroke "," using {command down}
    click button "Monitor" of tab group 1
end tell
Run Code Online (Sandbox Code Playgroud)

但它没有找到选项卡监视器。

我尝试使用 UIbrowser http://pfiddlesoft.com/uibrowser/ 但这没有帮助(不是名称)。

任何的想法?理想情况下,我想使用该脚本将 ssh 连接到机器,停止显示器进行一些 brew 安装,然后再次启动显示器。

此刻我只是在杀死进程

谢谢你的帮助

我从 2005 年开始在网上找到一些帖子:snitchctl ...但所有下载链接都已失效

applescript

7
推荐指数
0
解决办法
2991
查看次数

使用applescript将焦点设置到应用程序的特定窗口

如何使用applescript将焦点设置到给定应用程序的特定窗口?

我在不同的显示器上运行了几个iTerm2窗口.我想使用applescript将焦点设置到指定的窗口.

我需要两件事,一个收集窗口ID的脚本并将它们打印到stdout.我有这个:

tell application "iTerm"
  set wins to id of every window
end tell
Run Code Online (Sandbox Code Playgroud)

它打印6个整数:3034,2528,-1,-1,-1,-1

奖金问题:四个-1是什么?

然后我尝试:

tell application "System Events"
  activate window 3034
end tell
Run Code Online (Sandbox Code Playgroud)

唯一发生的事情就是我失去了当前终端的焦点(我正在键入这些命令),无论我是指定3034还是2528作为ID.

applescript

7
推荐指数
1
解决办法
9416
查看次数

终端准备/完成时的通知 - Applescript

有没有办法在终端完成命令时收到通知?

- >我运行另一个脚本(不是我的!),当这个脚本完成时下载数据我想退出终端并用这些数据做其他事情.

编辑:
我可能没有正确地问...

例:


tell application "Terminal"
   keystroke "php downloadscript.php"
   keystroke return
end tell

if (downloadFinished) -- do stuff else -- wait till finished

编辑2: 太棒了!谢谢!这样工作:


tell application "Terminal"
    set frontWindow to window 1
    repeat until busy of frontWindow is false
        delay 1
    end repeat
    #display dialog "finished"
end tell
问候hatschii

macos terminal notifications applescript

7
推荐指数
1
解决办法
4909
查看次数

使用ProcessSerialNumber获取NSRunningApplication

我有一个AppleEventDescriptor地方需要获取发送应用程序的包标识符.Apple Event包含一个typeProcessSerialNumber可以被强制转换为ProcessSerialNumber.

问题是GetProcessPID()在10.9 中被弃用了,并且似乎没有得到制裁pid_t可以用来实例化NSRunningApplication使用的方法-runningApplicationWithProcessIdentifier:.

我发现的所有其他选项都存在于Processes.h中,也不推荐使用.

我是否遗漏了某些内容,或者我是否必须遵守此弃用警告?

applescript objective-c nsrunningapplication

7
推荐指数
1
解决办法
1996
查看次数

AppleScript 有替换功能吗?

在 VBA 中,用不同的子字符串替换子字符串非常容易,例如objMsg.Body = Replace(objMsg.Body, "<Month\", Format(dtDate1, "mmmm"))"<Month>"电子邮件正文中的当前月份替换。我以前见过与此类似的问题,但它们已经有几年的历史了,而且往往有疯狂的解决方法,几乎​​不值得我花时间。

applescript

7
推荐指数
1
解决办法
5440
查看次数

使用 AppleScript 修改设置/系统首选项

我正在尝试制作一个可以切换空间自动重新排列的 AppleScript。我能够让 AppleScript 打开系统首选项并进入任务控制设置,但是我不确定如何选中我想要更改的框。

tell application "System Preferences"
    activate
end tell

tell application "System Events"
    tell process "System Preferences"
        click menu item "Mission Control" of menu "View" of menu bar 1
    delay 2
    tell window "Mission Control"
            //additional code goes here
    end tell
    end tell
end tell
Run Code Online (Sandbox Code Playgroud)

有没有办法查看窗口的组件是什么,以便我知道在我能够访问切换设置的复选框之前是否需要进入表格或其他内容

applescript

7
推荐指数
2
解决办法
1万
查看次数

如何以编程方式禁用安全输入?

我在我的工作 Mac 上使用第三方按键映射工具BetterTouchTool。最近,由于我认为是企业干扰,它实际上已被禁用,因为 macOS 功能称为“安全输入”被激活。BetterTouchTool 实际上对此进行了检测,以下是他们对该功能的描述:

安全输入是 macOS 的一项安全功能,可以由任何应用程序启用和禁用。通常这在密码字段处于活动状态时使用,以防止其他应用程序记录敏感数据。如果启用安全输入,BetterTouchTool 将无法使用新实现跟踪键盘事件。

不幸的是,有些应用程序不会禁用安全键盘输入并始终保持打开状态。如果您启用了此选项,如果安全输入处于活动状态,BetterTouchTool 将自动切换到旧的键盘快捷键实现。但是,在这种情况下,高级功能(见上文)将不起作用。

长话短说......他们提到的后备选项似乎没有正常工作,所以我试图找到禁用这个“安全输入”选项的方法。我还注意到我使用的另一个第三方应用程序Hyper Switch也因(我认为)同样的原因停止工作。如果他们的描述是正确的,并且任何应用程序确实可以启用或禁用该功能,我应该能够编写自己的应用程序并以编程方式禁用安全输入。所以我已经下载了 Xcode,但我真的不知道从哪里开始。

是否有某种方法可以通过 Objective-C/Swift、Applescripts 或任何其他编程访问来全局禁用安全输入?是否有一些 macOS API 调用来做到这一点?即使我每次登录机器时都必须运行它,那也没关系……只要它有效!

如何以编程方式从应用程序禁用此功能?

macos applescript objective-c swift

7
推荐指数
0
解决办法
3062
查看次数

通过命令行将文件 URL 和 args 发送到(正在运行的)macOS 应用程序

我一直在尝试创建一种方法来告诉我的(正在运行的)macOS 应用程序打开一些文件并为命令提供一些额外的参数。

对于冷启动应用程序,使用

$ open MyApp.app fileA.txt --args --foo-arg
Run Code Online (Sandbox Code Playgroud)

将启动应用程序,我将能够检查--foo-arg通过UserDefaults/ CommandLine/ ProcessInfo。但是,如果应用程序已经在运行,--foo-argUserDefaults/ ProcessInfo?/ 中缺少CommandLine

我一直在努力解决这里的解决方案,因为我有一些要求使事情变得更加困难。

要求

  1. 发送到应用程序的文件路径必须使用沙箱权限打开/保存
  2. 参数和文件路径必须同时被app拦截。

潜在的解决方案

XPC

有些人建议我使用 XPC,但在阅读它之后,我不确定该解决方案的外观如何?

  • 我是否必须创建一个始终运行的 Launch Agent 应用程序伴侣,以便它可以检测命令行操作并将其传递给我的应用程序?
  • 这如何与沙箱一起使用,因为每个进程都有自己的权限?

苹果脚本

  • 我是否应该使用 Apple 脚本告诉我的应用程序使用参数打开这些文件,从而绕过沙箱功能?
  • 通过 AppleScript 打开文件时,我可以保存这些文件吗?

网址方案

我可以注册我的应用程序以拥有自己的 URL 方案,但 NSApplicationDelegate 处理传入 URL 的方式分为两批。首先是它可以打开的 URL,然后是它无法打开的 URL 方案或文件路径。IE:

open -a MyApp.app myapp:foo; open -a MyApp.app file.txt
Run Code Online (Sandbox Code Playgroud)

我可能可以完成这项工作,但它有点俗气,我真的很想以正确的方式做到这一点。

macos cocoa applescript xpc appkit

7
推荐指数
1
解决办法
492
查看次数