如何将字符串(例如“hello”)复制到C#中的系统剪贴板,所以下次按 CTRL + V 我会得到“你好”?
答案 0 :(得分:718)
您需要一个命名空间声明:
using System.Windows.Forms;
对于WPF:
using System.Windows;
复制精确字符串(在本例中为文字):
Clipboard.SetText("Hello, clipboard");
复制文本框的内容:
Clipboard.SetText(txtClipboard.Text);
See here for an example。 或者...... Official MSDN documentation或Here for WPF。
答案 1 :(得分:41)
Clipboard.SetText("hello");
您需要使用System.Windows.Forms
或System.Windows
命名空间。
答案 2 :(得分:36)
我使用WPF C#coping到剪贴板和System.Threading.ThreadStateException
的这个问题的经验在这里,我的代码可以正常使用所有浏览器:
Thread thread = new Thread(() => Clipboard.SetText("String to be copied to clipboard"));
thread.SetApartmentState(ApartmentState.STA); //Set the thread to STA
thread.Start();
thread.Join();
此帖子here
但是这只适用于localhost,所以不要在服务器上尝试这个,因为它不会起作用。
在服务器端,我是使用zeroclipboard
完成的。经过大量研究后,这是唯一的方法。
答案 3 :(得分:36)
对于控制台项目,您需要先逐步添加System.Windows.Forms
引用。以下步骤适用于Visual Studio Community 2013 with .NET 4.5:
System.Windows.Forms
。然后,在代码顶部添加以下using
语句:
using System.Windows.Forms;
然后,在您的代码中添加以下Clipboard
。SetText
语句之一:
Clipboard.SetText("hello");
// OR
Clipboard.SetText(helloString);
最后,在Main
方法中添加STAThreadAttribute
,如下所示,以避免System.Threading.ThreadStateException
:
[STAThreadAttribute]
static void Main(string[] args)
{
// ...
}
答案 4 :(得分:1)
Clip.exe是Windows中的可执行文件,用于设置剪贴板。 请注意,该功能不适用于Windows以外的其他操作系统,该操作系统仍然很糟糕。
/// <summary>
/// Sets clipboard to value.
/// </summary>
/// <param name="value">String to set the clipboard to.</param>
public static void SetClipboard(string value)
{
if (value == null)
throw new ArgumentNullException("Attempt to set clipboard with null");
Process clipboardExecutable = new Process();
clipboardExecutable.StartInfo = new ProcessStartInfo // Creates the process
{
RedirectStandardInput = true,
FileName = @"clip",
};
clipboardExecutable.Start();
clipboardExecutable.StandardInput.Write(value); // CLIP uses STDIN as input.
// When we are done writing all the string, close it so clip doesn't wait and get stuck
clipboardExecutable.StandardInput.Close();
return;
}
答案 5 :(得分:1)
在@page AspCompat="true" 中使用的ASP.net web 表单上,将system.windows.forms 添加到您的项目中。 在您的 web.config 添加:
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="false" />
</appSettings>
然后你可以使用:
Clipboard.SetText(CreateDescription());