我正在Visual Studio中开发一个可在Windows和MAC上运行的应用程序(在Mono framework 3.6.0上)。 MAC上有一些问题似乎无法解决:
Clipboard.GetText() always returns empty string in Mono on Mac
但我无法在Winforms中使用NSPasteboard。
http://lists.ximian.com/pipermail/mono-bugs/2010-December/107562.html
这些问题有解决方法吗?
感谢
答案 0 :(得分:3)
以防其他人可能需要它,解决方案是使用pbcopy / pbpaste实现复制/粘贴。这是一个辅助类,可用于在OSX上复制/粘贴:
public class MacClipboard
{
/// <summary>
/// Copy on MAC OS X using pbcopy commandline
/// </summary>
/// <param name="textToCopy"></param>
public static void Copy(string textToCopy)
{
try
{
using (var p = new Process())
{
p.StartInfo = new ProcessStartInfo("pbcopy", "-pboard general -Prefer txt");
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.RedirectStandardInput = true;
p.Start();
p.StandardInput.Write(textToCopy);
p.StandardInput.Close();
p.WaitForExit();
}
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
}
/// <summary>
/// Paste on MAC OS X using pbpaste commandline
/// </summary>
/// <returns></returns>
public static string Paste()
{
try
{
string pasteText;
using (var p = new Process())
{
p.StartInfo = new ProcessStartInfo("pbpaste", "-pboard general");
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
pasteText = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
return pasteText;
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
return null;
}
}
}
与xsel一样,MAC上无需额外安装。