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

C#如何根据当前剪贴板内容更改剪贴板的内容?,c#,clipboard,C#,Clipboard,我很想给我的程序添加一个功能,这样当它检测到剪贴板文本有一定长度并以特定字符开头时,当他们从剪贴板粘贴文本时,它会粘贴一些不同的内容 例如: 用户复制“abcdefghijklmnopqrstuvxyz” --程序截取识别特定的字符串长度和起始字符,并切换文本-- 用户粘贴“zyxwvutsrqponmlkjihgfedcba” 非常感谢您的帮助:)如果您只需要指导: 要复制到剪贴板,您可以使用: 使用此选项从剪贴板获取文本: 获取文本后,您可以应用规则,如检查长度和起始字符,并进行转换,最后将

我很想给我的程序添加一个功能,这样当它检测到剪贴板文本有一定长度并以特定字符开头时,当他们从剪贴板粘贴文本时,它会粘贴一些不同的内容

例如:

用户复制“abcdefghijklmnopqrstuvxyz”

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

用户粘贴“zyxwvutsrqponmlkjihgfedcba”


非常感谢您的帮助:)

如果您只需要指导:

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

使用此选项从剪贴板获取文本:

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

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);
  }
}

请说明您迄今为止取得了哪些成就?因此无法为您编写代码欢迎使用堆栈溢出!这个问题并没有显示任何研究成果,所以请看我听起来像糟糕的用户体验。如果他们先将其粘贴到您的一个文本框中,然后单击一个名为“say Reverse”的按钮来执行实际的反转,这不是更好吗?在WM_paste事件中,修改剪贴板数据会导致对您自己的事件进行无休止的响应,这是一个很大的危险。如果你幸运的话,你甚至可以找到这个网站上你喜爱的同名者。(堆栈溢出)
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);
  }
}