使用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怎么做吗。