C#如何根据当前剪贴板内容更改剪贴板的内容?

时间:2017-12-01 02:56:09

标签: c# clipboard

我很好奇为我的程序添加一个功能,所以当它检测到剪贴板文本是一定长度并以某些字符开头时,当它们粘贴剪贴板中的文本时,会粘贴一些不同的文本。

示例:

用户副本' abcdefghijklmnopqrstuvwxyz'

- 程序拦截识别特定字符串长度和起始字符并切换文本 -

用户粘贴' zyxwvutsrqponmlkjihgfedcba'

帮助将不胜感激:)

1 个答案:

答案 0 :(得分:1)

如果您只需要指示:

要复制到剪贴板,您可以使用:

Clipboard.SetText("abcdefghijklmnopqrstuvwxyz");

使用此方法从ClipBoard获取文本:

string s = Clipboard.GetText();

获取文本后,您可以应用规则,例如检查长度和起始字符并进行转换,最后将转换后的文本添加到文本框中。

if (s.Length > 16 && s.StartsWith("abc")
{
   // do your stuff here 
   string convertedText = ConvertText(s);
   //finally
   txtBoxToPasteTo.Text = convertedText;
}

要拦截粘贴,您需要创建自定义文本框

class InterceptedTextBox : System.Windows.Forms.TextBox
{

  protected override void WndProc(ref Message m)
  {
    // WM_PASTE:
    if (m.Msg == 0x302 && Clipboard.ContainsText()) {
        this.Text = ConvertText(Clipboard.GetText());
        return;
    }
    base.WndProc(ref m);
  }
}

References