Cocoa 如何使用AppleScriptObjC和NSPasteboard读取剪贴板

Cocoa 如何使用AppleScriptObjC和NSPasteboard读取剪贴板,cocoa,applescript,applescript-objc,nspasteboard,Cocoa,Applescript,Applescript Objc,Nspasteboard,我在AppleScriptObjC周围找到了自己的路,发现Shane Stanley的帮助很大。但我仍然很难知道从哪里开始使用NSPasteboard 以下是我目前掌握的情况: use AppleScript version "2.4" use framework "Foundation" use framework "AppKit" use scripting additions on readClipboard(theClipboard) set theClipboard to c

我在AppleScriptObjC周围找到了自己的路,发现Shane Stanley的帮助很大。但我仍然很难知道从哪里开始使用NSPasteboard

以下是我目前掌握的情况:

use AppleScript version "2.4"
use framework "Foundation"
use framework "AppKit"
use scripting additions

on readClipboard(theClipboard)
    set theClipboard to current application's NSPasteboard
    return theClipboard as text
end readClipboard

set theContents to missing value
its readClipboard(theContents)
这当然行不通。但它似乎确实在做些什么

它返回:

error "Can’t make «class ocid» id «data optr000000002852F974FF7F0000» into type text." number -1700 from «class ocid» id «data optr000000002852F974FF7F0000» to text
任何指示都将不胜感激。

NSPasteboard是一个容器,可以容纳许多不同种类的物品。有一些标准粘贴板定义为NSGeneralBoard、NSRulerBoard或NSDragPboard。对于复制和粘贴操作,使用通用粘贴板。 存储在通用粘贴板内的项目也可能有所不同。可以将public.rtf、public.jpeg等存储在粘贴板中

综合所有这些因素,我们可以得到以下解决方案:

    set theClipboard to current application's NSPasteboard's generalPasteboard's stringForType:(current application's NSPasteboardTypeString)

玩得开心,Michael/Hamburg

有什么理由不只是使用标准添加的“剪贴板”命令吗?我应该围绕从剪贴板检索程序特定数据并将其作为文本读取来提出这个问题。剪贴板不能这样做,很好。这非常有帮助。如果剪贴板上有特定于应用程序的项目,如com.apple.flex.proFFPasteboardUTI,该怎么办?如何指定UTI以及如何将其作为文本读取?这是否会涉及ReadingOptions for Type方法?这取决于数据写入剪贴板的方式。大多数command-c操作都会将多个数据外观写入剪贴板。示例:如果在查找器中选择文件,则会复制文件本身以及文件路径。如果将其粘贴到Finder中,它将使用该文件;如果将其粘贴到Outlook中,它将粘贴文件路径。我可以想象你的应用程序也会填充字符串值!这是来自Final Cut Pro X的数据,据我所知,剪贴板上只有一个项目。它似乎主要是xml。