昨天朋友请我写一个修改剪贴板的数据的小程序,他经常从网上复制内容下来,粘贴到他的内容里面,但是内容里面会带有链接,所以希望我能监控他的剪贴板,然后自动去掉里面的链接,我利用系统的Clipboard定时获取剪贴板的内容,然后进行修改,再复制到剪贴板上面去,因为他的复制的内容都是网页形式的.所以做起来会有点麻烦.现在我已经能够对剪贴板的内容进行修改,并将其还原了,但是遇到中文就会失效了.以下是我模拟的一个程序,首先,我从网页上复制了一个字符a,以html格式保存的,那么我从剪贴板获取数据就是如下的内容:
获取剪贴板的数据的源码: string msg = Clipboard.GetText(TextDataFormat.Html);
那么msg="Version:0.9\r\nStartHTML:00000186\r\nEndHTML:00000261\r\nStartFragment:00000220\r\nEndFragment:00000225\r\nSourceURL:file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/1.html\r\n<html><body>\r\n<!--StartFragment-->a\r\n\r\n<!--EndFragment-->\r\n</body>\r\n</html>";整理后是:
Version:0.9
StartHTML:00000186
EndHTML:00000261
StartFragment:00000220
EndFragment:00000225
SourceURL:file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/1.html
<html><body>
<!--StartFragment-->a<!--EndFragment-->
</body>
</html>
那么理论上,我修改 <!--StartFragment--> 和<!--EndFragment-->之间的数据,然后调整EndHTML和EndFragment的位置,然后写入剪贴板里面,在其他地方就可以进行粘贴.但实际上,我将中间的a进行改写,只要不出现中文就不会失败,中文一出现就gameover了.所以请大家帮帮忙,这是怎么一回事呢?以下是我的代码,大家把下面的代码放在一个button的事件里面就能将内容复制到剪贴板:            StringBuilder sb = new StringBuilder();            sb.AppendLine("Version:0.9");
            sb.AppendLine("StartHTML:00000186");
            sb.AppendLine("EndHTML:00000257");
            sb.AppendLine("StartFragment:00000220");
            sb.AppendLine("EndFragment:00000221");
            sb.AppendLine("SourceURL:file:///C:/Documents%20and%20Settings/Administrator/%E6%A1%8C%E9%9D%A2/1.html");
            sb.Append("<html>");
            sb.AppendLine("<body>");
            sb.Append("<!--StartFragment-->");
            sb.Append("a");
            sb.AppendLine("<!--EndFragment-->");
            sb.AppendLine("</body>");
            sb.Append("</html>");
            Clipboard.Clear(); 
            Clipboard.SetText(sb.ToString(), TextDataFormat.Html);
这个是正常情况,除红色部分,其他的地方可以不用做修改.请大家一起来帮忙,呵呵