2

我在谷歌上搜索了几乎所有地方,但我没有找到任何有用的东西。我想知道如何获取当前缓存并将其保存在字符串中。该字符串将得到处理,然后替换当前缓存。

我说的是我们在 Windows 上的普通副本缓存 (CTRL + C)。

4

2 回答 2

2

使用 System.Windows.Forms.Clipboard.GetText()

http://msdn.microsoft.com/en-us/library/kz40084e.aspx

来自 MSDN 的示例:

// Demonstrates SetText, ContainsText, and GetText.
public String SwapClipboardHtmlText(String replacementHtmlText)
{
    String returnHtmlText = null;
    if (Clipboard.ContainsText(TextDataFormat.Html))
    {
        returnHtmlText = Clipboard.GetText(TextDataFormat.Html);
        Clipboard.SetText(replacementHtmlText, TextDataFormat.Html);
    }
    return returnHtmlText;
}
于 2012-06-21T02:24:32.297 回答
0

首先在您的控制台应用程序中System.Windows.Forms.dll通过解决方案资源管理器窗口添加对的引用。然后你应该可以添加using System.Windows.Forms.

这是一些从控制台应用程序中读取剪贴板文本的示例代码(重要:您需要将 [STAThread] 属性添加到 Main 中,如下所示;否则会ThreadStateException抛出异常)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SampleConsole
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            if (Clipboard.ContainsText(TextDataFormat.Text))
            {
                string clipBoardText = Clipboard.GetText(TextDataFormat.Text);
                Console.WriteLine("TEXT in ClipBoard : " + clipBoardText);

                Console.WriteLine("Type text to replace (and press Enter key) :");
                string replaceText = Console.ReadLine();
                Clipboard.SetText(replaceText);
                Console.WriteLine("REPLACED ClipBoard Text : " + Clipboard.GetText(TextDataFormat.Text));               
            }
            else
            {
                Console.WriteLine("No text in clipboard, please type now (and press Enter key) :");
                string newText = Console.ReadLine();
                Clipboard.SetText(newText);
                Console.WriteLine("NEW ClipBoard Text : " + Clipboard.GetText(TextDataFormat.Text));    
            }

            Console.Read();
        }
    }
}
于 2012-06-21T02:48:57.693 回答