使用 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。一旦我改变了它,一切都正常工作。
我有一个我写的小程序,它位于系统托盘中,单击时将打印特定 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。一旦我改变了它,一切都正常工作。