Как я могу скопировать текст в буфер обмена из консольного приложения Mono / C # на OS X? - PullRequest
4 голосов
/ 10 сентября 2011

Я пишу консольное приложение на C #, используя Mono на OS X.

В Windows вот как я копирую текст в буфер обмена:

Clipboard.SetText("text");

... из метода, размеченного с помощью атрибута STAThread:

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

Буфер обмена определяется в System.Windows.Forms. Этот код компилируется и запускается под официальной средой выполнения Microsoft .NET в Windows и в среде выполнения Mono в OS X.

В Windows текст копируется, поэтому не стоит забывать ссылку или оператор использования.

К сожалению, когда я запускаю код в Mono / OS X, текст на самом деле не копируется в буфер обмена. Что-то быстро появляется в моей док-станции, а затем исчезает так же быстро, но в любом случае текст, который я пытаюсь скопировать, не попадает в буфер обмена.

Итак: как скопировать текст из буфера обмена в OS X (и Linux?) С помощью Mono?

Если вам интересно посмотреть весь проект, код здесь: https://github.com/leeohsheeus/boom-sharp.

Ответы [ 2 ]

7 голосов
/ 03 мая 2013

Если вы хотите программировать для нескольких платформ с использованием Mono, вам может быть интересен Gtk.Clipboard .

Пример минимального использования:

Gtk.Clipboard clipboard = Gtk.Clipboard.Get(Gdk.Atom.Intern("CLIPBOARD", false));

clipboard.Text = "Hello World";

Такжеэтот Stackoverflow-Question может быть интересным.

0 голосов
/ 10 сентября 2011

Консольные приложения не могут копировать текст в буфер обмена. Пользователь должен будет использовать Copy & Paste из приложения терминала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...