如何在OS X上从Mono/C#控制台应用程序复制文本到剪贴板?

4

我将要在Mac OS X系统上使用Mono编写C#控制台应用程序。

在Windows系统上,以下是如何将文本复制到剪贴板:

Clipboard.SetText("text");

...从标记了STAThread属性的方法中:

[STAThread] // for OLE
public static void Main (string[] args)
{
    Clipboard.SetText("text");
}

剪贴板是在System.Windows.Forms中定义的。这段代码可以在官方Microsoft .NET运行时上编译和运行,并且可以在OS X上的Mono运行时上运行。

在Windows上,文本被复制,因此不是忘记引用或使用语句的问题。

不幸的是,当我在Mono/OS X下运行代码时,文本实际上没有被复制到剪贴板。我的Dock上会出现一些东西,然后很快就消失了,但无论如何,我想要复制的文本都没有出现在剪贴板上。

那么,在OS X(和Linux?)上如何使用Mono复制文本到剪贴板呢?

如果您有兴趣查看整个项目,代码在这里:https://github.com/leeohsheeus/boom-sharp

2个回答

8
如果你想使用Mono在多个平台上进行编程,Gtk.Clipboard可能会对你有所帮助。
最简单的用法示例:
Gtk.Clipboard clipboard = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));

clipboard.Text = "Hello World";

此外,这个Stackoverflow问题可能会很有趣。


http://stackoverflow.com/questions/17178864/clipboard-gettext-always-returns-empty-string-in-mono-on-mac。也许可以使用一些Linux API函数来代替? - Luba

0

控制台应用本身无法复制文本到剪贴板。用户必须使用终端应用程序的复制和粘贴功能。


你是指全部吗?还是只在Mono上?因为从控制台应用程序复制到剪贴板在Windows上可以工作。 - Joshua Tompkins
我的意思是“完全”。如果它在.NET中在Windows上运行,那么它就是仅限于Windows的功能。 - jstedfast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接