我怎么能复制一个字符串(例如“hello”)到系统剪贴板在c#,所以下次我按CTRL+V我会得到“hello”?
当前回答
我在这个问题上使用WPF c#处理剪贴板和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();
这篇文章的功劳在这里
但这只在本地主机上工作,所以不要在服务器上尝试这一点,因为它不会工作。
在服务器端,我使用zeroclipboard。唯一的办法,经过大量研究。
其他回答
我在这个问题上使用WPF c#处理剪贴板和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();
这篇文章的功劳在这里
但这只在本地主机上工作,所以不要在服务器上尝试这一点,因为它不会工作。
在服务器端,我使用zeroclipboard。唯一的办法,经过大量研究。
在ASP.net web表单中使用@page AspCompat="true",将system.windows.forms添加到你的项目中。 在你的网上。配置添加:
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="false" />
</appSettings>
然后你可以使用:
Clipboard.SetText(CreateDescription());
如果你不想或者不能使用System.Windows.Forms,你可以使用Windows本地api: user32和剪贴板函数GetClipboardData和SetClipboardDat (pinvoke)
.NET 6包装器库可以在这里找到https://github.com/MrM40/WitWinClipboard/tree/main
Clipboard.SetText("hello");
您需要使用System. windows . forms或System。Windows命名空间。
Clip.exe是Windows下用于设置剪贴板的可执行文件。注意,除了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;
}
推荐文章
- 在c#中从URI字符串获取文件名
- 检查SqlDataReader对象中的列名
- 如何将类标记为已弃用?
- c# 8支持。net框架吗?
- Linq-to-Entities Join vs GroupJoin
- 为什么字符串类型的默认值是null而不是空字符串?
- 在list中获取不同值的列表
- 组合框:向项目添加文本和值(无绑定源)
- 如何为ASP.net/C#应用程序配置文件值中的值添加&号
- 从System.Drawing.Bitmap中加载WPF BitmapImage
- 如何找出一个文件存在于c# / .NET?
- 为什么更快地检查字典是否包含键,而不是捕捉异常,以防它不?
- [DataContract]的命名空间
- string. isnullorempty (string) vs. string. isnullowhitespace (string)
- 完全外部连接