Problem
In C#, how can I transfer a string (for example, “hello”) to the System Clipboard such that when I click CTRL+V, I get “hello”?
Asked by aharon
Solution #1
There are two classes that are located in separate assemblies and namespaces.
To copy an exact string (literal in this example), use the following syntax:
Clipboard.SetText("Hello, clipboard");
Use TextBox to copy the contents of a textbox. Obtain text first, then set clipboard value: Copy() or get text first, then set clipboard value:
Clipboard.SetText(txtClipboard.Text);
Take a look at this example. Official MSDN documentation or WPF documentation can be found here.
Remarks:
Answered by Kieren Johnstone
Solution #2
To do a step-by-step console project, you’ll need to first add the System. Windows. References to forms. The steps below work with.NET 4.5 and Visual Studio Community 2013:
Then, at the beginning of your code, combine the following using statement with the others:
using System.Windows.Forms;
Then, add one of the Clipboards below. Add the following SetText statements to your code:
Clipboard.SetText("hello");
// OR
Clipboard.SetText(helloString);
Finally, to avoid a System, add STAThreadAttribute to your Main function as follows. Threading. ThreadStateException:
[STAThreadAttribute]
static void Main(string[] args)
{
// ...
}
Answered by skia.heliou
Solution #3
My experience with this problem utilizing WPF C# clipboard and system coping. Threading. ThreadStateException is here, along with my code, which worked in all browsers:
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 are the sources for this article.
However, this only works on localhost; attempting to do it on a server will result in failure.
I used zeroclipboard on the server side to accomplish this. After a lot of res, the only way out was to
Answered by BMaximus
Solution #4
Clipboard.SetText("hello");
You’ll have to make use of the System. System or Windows.Forms For that, you’ll need to use Windows namespaces.
Answered by Bradley Smith
Solution #5
Clip.exe is a Windows program that allows you to configure the clipboard. Note that this does not apply to other operating systems outside Windows, which is still a pain.
/// <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;
}
Answered by QB kyu
Post is based on https://stackoverflow.com/questions/3546016/how-to-copy-data-to-clipboard-in-c-sharp