使用 vb.net 保留从另一个应用程序复制的文本的格式

Keep formatting of copied text from another application using vb.net

我有一个我写的小程序,它位于系统托盘中,单击时将打印特定 application.This 位的选定文本(由用户突出显示)工作正常,我可以打印它out 但它丢失了格式。

我已经搜索了这个视图和许多其他视图,试图找出如何设置复制数据的格式属性,但结果是空的。

这是我目前使用的代码:-

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles    Button1.Click

    Dim hWnd As IntPtr = FindWindow("putty", Nothing)

    EnableWindow(hWnd, True)

    Clipboard.Clear()

    SendKeys.Send("^c")
    If Clipboard.GetDataObject().GetDataPresent(DataFormats.Text) Then

        RichTextBox1.Text = Clipboard.GetDataObject().GetData(DataFormats.Text) '.ToString()
    Else
        RichTextBox1.Text = "The clipboad does not contain any text"
    End If

    RichTextBox1.Paste()


    Dim result As DialogResult = PrintDialog1.ShowDialog()

    ' If the result is OK then print the document. 
    If (result = DialogResult.OK) Then


        docToPrint.Print()
    End If



End Sub

基本上我只是想让它对所选文本进行某种快照并将其打印出来。

我们曾经使用 NetadminTools.com 中的 Clip.exe,但我无法在 Windows 8.

上使用它

您只会从 putty 中获取纯文本,所以我不确定您在这里的期望是什么。 但是 CF_TEXT 剪贴板格式(大概是您要求 DataFormats.Text 时得到的格式)不包含任何格式。只是文字。如果您想要字体、边距、bold/itallic/underline、颜色等,那么您需要 CF_RTF 或 CF_HTML,或者其中一种 OLE 格式。 CF_RTF 是一种 "private" 剪贴板格式,因此您必须注册它才能使用它。 开始阅读 MSDN 上的剪贴板格式:https://msdn.microsoft.com/en-us/library/windows/desktop/ms649013%28v=vs.85%29.aspx

经过更多搜索后,我发现了以下 post :

How to Load RTF file to RichTextBox without loosing content format VB.NET

我注意到他们使用 RichTextBox1.Rtf 而不是 RichTextBox1.text。一旦我改变了它,一切都正常工作。