Clipboard.SetText(HTML)不再有效

我有一个代码,它在HTML标签之间添加某些生成的字符串,并使用HTML数据设置剪贴板。 如果我不是疯了但我确信此代码之前对我有用,没有对它进行任何更改,但它不再起作用了!

我找到了Clipboard HTML的文档并采用了这个例子,在下面进行了测试,它也不适用于我。

  Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim meh As String = _ "Version:0.9" & vbCrLf & _ "StartHTML:71" & vbCrLf & _ "EndHTML:160" & vbCrLf & _ "StartFragment:130" & vbCrLf & _ "EndFragment:150" & vbCrLf & _ "StartSelection:130" & vbCrLf & _ "EndSelection:150" & vbCrLf & _ "" & vbCrLf & _ " " & vbCrLf & _ " " & vbCrLf & _ "" & vbCrLf & _ "bold. This is bold italic. This " & vbCrLf & _ " " & vbCrLf & _ " " & vbCrLf & _ "" Clipboard.SetText(meh, TextDataFormat.Html) End Sub 

我也做过这样的事情: –

 Clipboard.SetText(TextBox1.text, TextDataFormat.Html) 

然后我用精心计算的字节为StartHTML粘贴不同的字符串等…

 Version:0.9 StartHTML:71 EndHTML:178 StartFragment:71 EndFragment:178    bold. This is bold italic. This   

我能够在Windows 10和Windows 7上的VB2010,VB2017上重现这种意外行为

值得补充一点,我正在使用Clipdiary应用程序,在运行上面的代码后返回类似“无法进行描述和标题”的内容

我想知道有人可以运行这段代码,看看我做错了什么因为我在这里得到了解释; 我还在某个地方找到了这个代码: –

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PasteLink("http://www.experts-exchange.com/M_1539809.html", "Idle_Mind's Profile") End Sub Public Sub PasteLink(ByVal link As String, ByVal description As String) Const sContextStart As String = "" Const sContextEnd As String = "" Const m_sDescription As String = _ "Version:1.0" & vbCrLf & _ "StartHTML:aaaaaaaaaa" & vbCrLf & _ "EndHTML:bbbbbbbbbb" & vbCrLf & _ "StartFragment:cccccccccc" & vbCrLf & _ "EndFragment:dddddddddd" & vbCrLf Dim sHtmlFragment As String = _ "" _ & description & "" Dim sData As String = m_sDescription & sContextStart & sHtmlFragment & sContextEnd sData = sData.Replace("aaaaaaaaaa", m_sDescription.Length.ToString.PadLeft(10, "0")) sData = sData.Replace("bbbbbbbbbb", sData.Length.ToString.PadLeft(10, "0")) sData = sData.Replace("cccccccccc", (m_sDescription & sContextStart).Length.ToString.PadLeft(10, "0")) sData = sData.Replace("dddddddddd", (m_sDescription & sContextStart & sHtmlFragment).Length.ToString.PadLeft(10, "0")) Clipboard.SetDataObject(New DataObject(DataFormats.Html, sData)) End Sub 

哪个也DataObject ,基本上这里剪贴板设置为DataObject ,但它不起作用。

解释编辑:

我意识到在这些人不同之后,对这个问题有不同的解释。

我的应用程序正在生成一个Signature,然后将其放入剪贴板以将其粘贴到GMAIL。

如果我使用我的原始代码,那么会发生什么:

  1. 我尝试在Gmail上粘贴“签名”部分 – 没有任何粘贴

  2. 我把它贴在里面或MSWORD – 粘贴好

  3. 然后我可以将其粘贴到Gmail中。

因此,必须在Gmail上的这个窗口中更改某些内容,因此它不再起作用,因为整个clipboard.settext模块在某种程度上无法正常工作,因此产生了对该问题的整体误解,这让我发疯。

此外,看起来Derek提供的代码在设置中的Gmail Signature窗口上工作,即使在第一次,我还需要重新设计我的function。

你可以看看这是否适合你。 我经常使用它。

它看起来与你的非常相似,它是c#,但你可以使用在线代码翻译器。

  public void SetHyperlinkOnClipboard( string link, string description ) { try { const string sContextStart = ""; const string sContextEnd = ""; const string m_sDescription = "Version:0.9" + Constants.vbCrLf + "StartHTML:aaaaaaaaaa" + Constants.vbCrLf + "EndHTML:bbbbbbbbbb" + Constants.vbCrLf + "StartFragment:cccccccccc" + Constants.vbCrLf + "EndFragment:dddddddddd" + Constants.vbCrLf; string sHtmlFragment = "" + description + ""; string sData = m_sDescription + sContextStart + sHtmlFragment + sContextEnd; sData = sData.Replace( "aaaaaaaaaa", m_sDescription.Length.ToString().PadLeft( 10, '0' ) ); sData = sData.Replace( "bbbbbbbbbb", sData.Length.ToString().PadLeft( 10, '0' ) ); sData = sData.Replace( "cccccccccc", ( m_sDescription + sContextStart ).Length.ToString().PadLeft( 10, '0' ) ); sData = sData.Replace( "dddddddddd", ( m_sDescription + sContextStart + sHtmlFragment ).Length.ToString().PadLeft( 10, '0' ) ); Clipboard.SetDataObject( new DataObject( DataFormats.Html, sData ), true ); } catch( Exception ex ) { } }