从剪贴板内容 C# 设置字符串值

本文关键字:设置 字符串 剪贴板 | 更新日期: 2023-09-27 18:33:03

我正在编写一个小应用程序,它应该显示剪贴板中当前字符串中的字符数。例如,有人突出显示一行文本并点击副本,然后运行我的应用程序。我希望它显示字符串中的字符数。应该很简单,但我不断返回零。有相关的线程,但没有一个回答我的问题。这是我到目前为止所拥有的(顺便说一句,它是一个控制台应用程序(:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BuildandRun
{
    class Program
    {
        static void Main(string[] args)
        {
            string data = Clipboard.GetText();
            Console.WriteLine(data);
            int dataLength = data.Length;
            Console.WriteLine(dataLength + " Characters.");
            Console.ReadLine();
        }
    }
}

从剪贴板内容 C# 设置字符串值

来自 MSDN:

剪贴板类只能在设置为单个线程的线程中使用 公寓(STA(模式。若要使用此类,请确保 Main 方法 用 STAThreadAttribute 属性进行标记。

只需将您的代码更改为:

[STAThreadAttribute]
static void Main( string[] args )

Clipboard仅适用于单线程单元线程。

因此,答案是将以下内容添加到 Main((:

[STAThread]
static void Main(string[] args)
{
    ...

或者像这样的解决方法:

public string GetClipboardText()
{
    string result = "";
    Thread thread = new Thread(() => result = Clipboard.GetText());
    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();
    thread.Join();
    return result;
}