使用vb.net保留从其他应用程序复制的文本格式

使用vb.net保留从其他应用程序复制的文本格式,vb.net,clipboard,Vb.net,Clipboard,我有一个我编写的小程序,它位于系统托盘中,当单击时,它将打印特定应用程序的选定文本(由用户突出显示)。此位工作正常,我可以将其打印出来,但它会丢失格式 我搜索过这个场景,还有很多其他人试图找到如何设置复制数据的格式属性,但结果是空的 以下是我目前使用的代码:- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim hWnd As IntPtr = FindWind

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

我搜索过这个场景,还有很多其他人试图找到如何设置复制数据的格式属性,但结果是空的

以下是我目前使用的代码:-

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_文本剪贴板格式(可能是您请求DataFormats.TEXT时得到的格式)不包含任何格式。只有文本。如果需要字体、页边距、粗体/斜体/下划线、颜色等,则需要CF_RTF或CF_HTML,或其中一种OLE格式。 CF_RTF是一种“私有”剪贴板格式,因此您必须注册它才能使用它。
开始阅读MSDN上的剪贴板格式:

在搜索了更多内容后,我发现了以下帖子:


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

我刚刚使用Putty命令“将所有内容复制到剪贴板”,并将其粘贴到记事本中,以查看它是否弄乱了格式。这似乎是终端窗口的一种截图。你知道我用vb怎么做吗。