【问题标题】:Fixing osascript clipboard for OSX Mountain Lion修复 OSX Mountain Lion 的 osascript 剪贴板
【发布时间】:2012-07-25 18:00:42
【问题描述】:

在我的 Ruby 应用程序中,我长期使用以下函数写入剪贴板:

def pbcopy(text)
  IO.popen("osascript -e 'set the clipboard to do shell script \"cat\"'","w+") {|pipe| pipe << text}
end

我从here 获得了这个代码,它通过反引号取代了我之前使用的 pbpaste,因为它在 UTF8 和其他东西上看起来更可靠。它一直运行良好,但是使用新的 OSX Mountain Lion 时,它停止了工作。 osascript -e '将剪贴板设置为“hi”' 效果很好,所以它可能是管道不起作用的东西。任何帮助将不胜感激!

【问题讨论】:

    标签: ruby applescript osx-mountain-lion osascript


    【解决方案1】:

    我刚刚尝试过,它适用于 UTF-8 字符:

    def pbcopy(text)
      IO.popen("pbcopy", "w+") {|pipe| pipe << text}
    end
    
    pbcopy "smörgåsbord"
    puts `pbpaste`
    

    【讨论】:

    • 当我尝试将文本粘贴到 10.8 上的文本视图时,字符仍然混乱。
    • 不适合我,如果我粘贴在 TextEdit 或 Chrome 地址字段中。也许是不同版本的 Ruby(对我来说是 1.9.3)或本地环境。我也在 10.8 上。
    【解决方案2】:

    do shell script "cat" 似乎不再返回 STDIN。

    您可以使用on run 处理程序获取参数。 {input, parameters} 表单似乎只能在 Automator 中使用。

    system("osascript", "-e", "on run {input}
    set the clipboard to input
    end", "あä")
    

    你也可以设置__CF_USER_TEXT_ENCODING variable:

    IO.popen("__CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbcopy", "w") { |i|
      i << "あä"
    }
    

    【讨论】:

    • 您提供的第一个示例似乎不起作用 - OSX ML 中的剪贴板上没有任何内容。
    • @StianHåklev 你是对的; on run {input} 缺少大括号。
    猜你喜欢
    • 2013-09-03
    • 1970-01-01
    • 2012-09-03
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2013-03-16
    相关资源
    最近更新 更多