簡體   English   中英

Clipboard.SetText(HTML)不再起作用

[英]Clipboard.SetText(HTML) no longer work

我有一個代碼,該代碼在HTML標簽之間添加了某些生成的字符串,並使用HTML數據設置了剪貼板。 如果我還沒瘋,那么我可以肯定這段代碼對我有用,那么就沒有對其進行任何更改,但是它不再起作用了!

我找到了Clipboard 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 & _
            "<!DOCTYPE html>" & vbCrLf & _
            "<HTML> " & vbCrLf & _
            "<BODY> " & vbCrLf & _
            "<!--StartFragment-->" & vbCrLf & _
            "<B>bold.</B> <I><B>This is bold italic.</B></I> <I>This</I> " & vbCrLf & _
            "<!--EndFragment--> " & vbCrLf & _
            "</BODY> " & vbCrLf & _
            "</HTML>"
    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
<!DOCTYPE html>
<HTML> 
<BODY> 
<B>bold.</B> <I><B>This is bold italic.</B></I> <I>This</I> 
</BODY> 
</HTML>

我能夠在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 = "<HTML><BODY><!--StartFragment -->"
    Const sContextEnd As String = "<!--EndFragment --></BODY></HTML>"
    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 = _
        "<A HREF=" & Chr(34) & link & Chr(34) & ">" _
        & description & "</A>"

    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

兩者也不起作用,基本上,這里Clipboard被設置為DataObject ,但是它不起作用。

解釋編輯:

伙計們對這個問題有了不同的了解之后,我意識到對這個問題有不同的解釋。

我的應用程序正在生成一個簽名,然后將其放置到剪貼板中以將其粘貼到GMAIL。

如果我使用原始代碼,將會發生以下情況:

  1. 我嘗試在Gmail的“簽名”部分粘貼-沒有粘貼

  2. 我將其粘貼到內部或MSWORD中-粘貼確定

  3. 然后,我可以將其粘貼到Gmail中。

因此,必須在Gmail上的此窗口中進行某些更改,以使其不再起作用,並且由於整個剪貼板.settext模塊在某種程度上無法正常工作,因此引起了整個問題的誤解,使我發瘋。

而且看起來Derek提供的代碼即使在第一次使用時也可以在設置內的Gmail簽名窗口上使用,然后我將需要重新設計功能。

您可以查看這是否適合您。 我經常使用它。

它看起來與您的非常相似,並且是c#,但是您可以使用在線代碼轉換器。

   public void SetHyperlinkOnClipboard( string link, string description )
   {
      try
      {
         const string sContextStart = "<HTML><BODY><!--StartFragment -->";
         const string sContextEnd = "<!--EndFragment --></BODY></HTML>";
         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 = "<A HREF=" + Strings.Chr( 34 ) + link + Strings.Chr( 34 ) + ">" + description + "</A>";

         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 )
      {

      }
   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM