问题标签 [scripting-bridge]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - 获取 iTunes'/Finder 的默认专辑封面图片
我的应用程序的部分功能是它获取当前正在播放的 iTunes 曲目的专辑封面(使用 Scripting Bridge)。我能够很好地做到这一点。但是,当没有播放曲目时,我想获得 iTunes 和 Finder 都具有的默认专辑封面。这可能来自代码吗?(或者如果没有,还有什么办法?)
python - 脚本桥 vs PyObjC vs py2app
我刚刚开始学习如何集成 Python 和 Mac OS 应用程序。(我想调用一些从 Cocoa 到 Python 的方法。)我遇到过这些术语——Scripting Bridge、PyObjC 和 py2app。有什么不同?PyObjC 是脚本桥的一个例子吗?什么时候 py2app 开始发挥作用?
cocoa - Cocoa:当 iTunes 歌曲改变时接收回调
我正在为我的聊天客户端编写一个功能,它将使用他们当前正在播放的 iTunes 歌曲更新用户的状态,就像 Skype 和类似的其他聊天客户端一样。我目前只是使用 ScriptingBridge 的方法来获取 iTunes 的当前歌曲。
但是,我似乎无法弄清楚是否可以以某种方式注册一个回调,该回调将在 iTunes 中当前播放的歌曲发生变化时被调用。我显然可以连续触发 NSTimer,它会每隔 10 秒触发一次,并检查 iTunes 是否正在运行,如果是,则获取歌曲信息并将其与存储的信息进行比较。这可能不是最好的方法,但我还没有找到任何其他方法。
谢谢,如果有人可以帮助我。非常感激。
html - 脚本桥、Apple Mail、HTML 和头文件
我已经能够通过脚本桥和苹果邮件破解我的方式,现在可以从我的可可程序发送电子邮件。现在,我正在尝试发送 HTML 邮件并遇到了障碍。简而言之,我生成了一个 NSString ,其中包含从打开的 html 标记到 slash-html 的关闭标记的整个 HTML 代码,以及介于两者之间的所有好东西。
但是,当我通过脚本桥将其作为内容传递时,我最终得到的只是一封电子邮件,我可以在其中阅读 HTML 代码......我会说它是纯文本,但链接仍然显示为可点击的链接,所以这并不完全真的。
如果我在 Safari 中打开代码,HTML 会正确显示。
我想这可能与电子邮件中的标题信息有关,但如果有办法通过脚本桥设置它,我还没有找到一种方法来做到这一点。同样,由于链接是可点击的,我认为它们可能不是问题?
如果有办法将标头信息设置为“Content-Type: text/html; charset=ISO-8859-1”和“MIME-Version: 1.0”并且任何人都知道如何,请赐教:)
如果没有,有人有什么建议吗?我确定我一定遗漏了一些东西,我希望它很简单。
* 编辑 *
我尝试在 Safari 中打开我的 HTML 文件并使用 FILE>Email Contents 然后在 Apple Mail 中创建一个新电子邮件。这封新电子邮件可以 HTML 格式查看。因此,我知道必须有可能做到这一点。
然后,我将该电子邮件以及非 html 电子邮件发送给自己。
仅检查两个文件的标题信息显示,这两封电子邮件的内容类型相同,被列为:
当然,发送的每封电子邮件的 ID 字符串都不同......
但是,在查看原始源代码时,HTML 文件实际上确实有第二种内容类型,它在 HTML 代码之前指定了“text/html”(我将其解释为 multipart/alternative 只是指示邮件应用程序查看对于其他内容类型标签...
xcode - Scripting Bridge 在将收件人添加到邮件时添加了不需要的 HTML 代码
好吧,所以这个有点奇怪......
我在 Safari 中有一个 HTML 页面,我想将其作为电子邮件发送。如果我进入文件菜单并选择“此页面的邮件内容”,它会按预期传输并且看起来正确。
但是,如果我使用 Scripting Bridge 将收件人添加到外发邮件,它会将以下代码添加到添加的每个收件人的邮件内容区域的顶部。在一个示例中,添加了 24 个收件人,生成的电子邮件包含以下代码的 24 个连续重复:
由于 div 标记的呈现方式,在电子邮件的开头创建了 24 个换行符,以便我的 HTML 从页面的下方开始。
有人知道为什么要插入此代码吗?
这是我用于 Scripting Bridge 的代码:
这是我用来添加收件人的代码:
* 编辑 *
我找到了解决该问题的方法,但是我仍然想知道为什么在添加收件人时将这段代码插入正文中...解决方法如下:我将以下内容插入了 CSS 部分我的 HTML 模板...
因此,显示会忽略 html 模板中的所有 div 标签。我仍然有上述代码的 24 个副本,但它们基本上被忽略了,这解决了我的视觉布局问题。
如果有人有更好的解决方案,请告诉我!
objective-c - 如何使用 ScriptingBridge 保存当前的 Safari 选项卡
我正在尝试使用脚本桥来告诉 Safari 将当前页面保存为 PDF
在“Safari.h”头文件中存在一个SafariItem类的保存方法:
所以我使用了这个,但它不起作用:
后来我注意到safari.app的打印选项里有另存为PDF,所以我尝试使用这个功能
但是,当我尝试初始化一个 SafariPrintSettings 对象时,它导致了编译错误:
似乎编译器没有找到那个类,但我确实包含了头文件并添加了 ScriptingBridge 框架
任何人都可以帮忙吗?
提前致谢。
xcode - 以编程方式选择外发邮件
这是我正在尝试做的事情:假设您在邮件中并创建一个新的空白邮件消息,然后在其中输入一些数据,例如正文副本等(在我的情况下,该消息是通过脚本桥创建的使用 safari 中的“此页面的邮件内容”......此过程的主要目的是我的应用程序。)
从我的应用程序中,我想选择该消息并将其分配给:
这样我就可以以编程方式添加收件人。我尝试了几种看起来合乎逻辑的方法,但到目前为止我还没有找到正确的组合,而且头文件对我来说似乎不是很清楚(我是脚本桥的新手。)
我最初的想法是尝试这个:
哪个应该抓取创建的最后一条传出消息。它似乎起作用,因为我能够将收件人添加到 mailMessage (尽管有几次当存在多条传出消息时我收到了意外的结果,例如将收件人添加到错误的消息中)但尝试记录主题行消息:
即使在邮件的主题字段中有一个清晰可见的主题,也总是返回 NULL。任何其他参数也会返回 NULL。
我正在收集它一定是我分配给上面的 mailMessage 的问题,因为我收到消息属性的 NULL (或收到意外结果)的唯一时间是如果我尝试将 mailMessage 指向现有的传出消息。如果我使用脚本桥创建邮件消息,那么我可以正确检索所有属性。
有没有人足够了解邮件脚本的层次结构,可以告诉我为什么使用上述 mailMessage 分配的参数得到 NULL?最简单的方法是获取我的消息,以便我可以添加收件人,然后调用:
方法?任何见解都会有所帮助。我已经花了一周的时间浏览 mail.h 头文件,并且对于此时还可以尝试什么感到不知所措。
objective-c - 如何让 Scripting Bridge 在运行时生成 Objective-C 类?
我今天正在更新 Scripting Bridge 胶水文件(用于 Mail.app),并注意到sdp(1) 手册页显示:
无需创建对应的实现文件;Scripting Bridge 将在运行时创建类实现。
这听起来很酷,但是我得到的生成类没有实现(如预期的那样):
我不想抑制所有未定义的符号,因为这很容易掩盖合法问题,所以我只是使用-U
(根据ld(1) 手册页):
指定 symbol_name 可以没有定义。使用 -two_levelnamespace,生成的符号将被标记为 dynamic_lookup,这意味着 dyld 将搜索所有加载的图像。
(我必须使用-Xlinker -U -Xlinker _OBJC_CLASS_$_MailApplication
这些标志来到达 ld,否则 clang 会为自己保留这些参数。)
显然制作它们dynamic_lookup
是错误的做法,因为这会在启动时产生动态链接错误:
如果我使用-force_flat_namespace -undefined suppress
(我不想使用,如上所述),也会发生这种情况。Scripting Bridge Programming Guide似乎暗示我做事正确(“准备代码”部分),但没有提到这个问题。
xcode - 升级 Xcode 后找不到 Scripting Bridge 头文件:mail.h iCal.h
这应该很容易..
我相信我最近从 Xcode 3.6 升级到了 10.7 上的最新版本的 Xcode。
我一直在为 Apple Mail 和 iCal 编写脚本桥。
以前,我可以使用 FILE > Open Quickly... 查看 mail.h 或 iCal.h 头文件,因为输入文件名只会显示一个文件...正确的文件。
现在,当我使用 Open Quickly 输入 mail.h 或 iCal.h 时,列表中会出现几十个文件,但没有一个是正确的 Scripting Bridge 头文件。
谁能告诉我在哪里和/或如何再次查看这些头文件?这让我有点发疯了..
谢谢!
objective-c - Objective-C:从外部应用程序获取菜单信息
我正在尝试编写一个 Mac OS 菜单额外应用程序,当用户按下某个热键时,它会显示一个包含当前活动应用程序菜单栏项的上下文菜单。上下文菜单的显示我可以做得很好,但我似乎无法获得当前活动应用程序的菜单栏项。目前我正在使用[[[NSWorkspace sharedWorkspace] runningApplications] filteredArrayUsingPredicate:]
获取活动应用程序的名称,但 NSRunningApplication 似乎包含很少的其他信息。有什么方法可以从外部应用程序获取有关应用程序菜单的信息?
更新:
如果您对使用 AppleScript 感到满意,使用ScriptingBridge框架似乎效果很好:
将打印出应用程序菜单栏中可用的菜单列表。还没有找到获取上下文菜单的方法,所以我不会称之为回答...