检查文件是否在任何应用程序中打开

时间:2011-11-04 14:25:00

标签: macos cocoa nsdocument

是否可以检查任何应用程序是否打开了文件或包?例如,假设我知道/Users/Foo/AwesomeDocument.txt存在并且在TextEdit中打开,我可以从我的应用程序中可靠地检查文档是否已打开? 我可以使用仅适用于通过NSDocumentController打开的文档的解决方案。

4 个答案:

答案 0 :(得分:1)

您可以使用NSTask运行shell命令lsof | grep "Document.txt",然后解析结果,尽管该方法有点慢。我不知道有一种原生的Cocoa方法可以达到这个目的。

答案 1 :(得分:0)

你的意思是这样吗?

例如,在Applescript中:

tell application "TextEdit"
    set theDocument to document of window 1
    return theDocument
end tell

答案 2 :(得分:0)

tell application "TextEdit"
    set theDocuments to every document
    repeat with aDocument in theDocuments
        if (path of aDocument) as string is equal to "/test.txt" then
            display dialog "found"
        end if
    end repeat
end tell

答案 3 :(得分:0)

从10.7开始,您可能想尝试使用NSFileCoordinator。请记住,并非每个应用程序都必须NSFilePresenter已实施,并与NSDocument一起使用。