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



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

我已经搜索了这个景象,还有很多其他人试图找出如何设置复制数据的格式属性,但结果都是空的。

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

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时得到的格式)不包含任何格式。只是文本。如果您需要字体、页边距、粗体/斜体/下划线、颜色等,则需要CF_RTF或CF_HTML,或其中一种OLE格式。CF_RTF是一种"专用"剪贴板格式,因此您必须注册它才能使用它。开始在MSDN上阅读有关剪贴板格式的信息:https://msdn.microsoft.com/en-us/library/windows/desktop/ms649013%28v=vs.85%29.aspx

在进一步搜索后,我发现了以下帖子:

如何在不丢失内容格式VB.NET 的情况下将RTF文件加载到RichTextBox

我注意到他们使用了RichTextBox1.Rtf而不是RichTextBox1.文本。我一改变这一点,一切就正常了。

最新更新