今天在上网时,复制了一个数据,可是因为其他事情忘记粘贴了,后来就找不到了,所以想到做一个监视系统剪贴板变化的程序,然后把内容放到一个RIchtextbox中,可是我不知道应该如何监视系统剪贴板变化,所以就用Timer来不断的浏览剪贴板内容,可是这样比较占用内存,不是理想的做法,所以想监视系统剪贴板变化,一旦发现有复制或者剪切,就把剪贴板内的可以转化为文本的内容放到Richtextbox中,实现内容的保存,不知道哪位曾经有过这方面的经验,希望能给予指点!
现在我做的一个放到网上,供大家参考,同时希望有人能给出更好的意见!
Dim
CurInfo
As
String
'
''用于上次记录的剪贴板信息
Private Sub Form1_Load() Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 10000 '''十秒刷新
Timer1.Start()
GetInfo()
End Sub
Sub GetInfo() Sub GetInfo() '''获取剪贴板信息
Dim Idata As IDataObject
Idata = System.Windows.Forms.Clipboard.GetDataObject()
If Idata.GetDataPresent(DataFormats.Text) = True Then
If Idata.GetData(DataFormats.Text).ToString = CurInfo Then
Exit Sub
End If
CurInfo = Idata.GetData(DataFormats.Text).ToString
RTBox.AppendText(">>>>>>" & Now & vbCrLf) '''RTBox是一个Richtextbox
RTBox.AppendText(Idata.GetData(DataFormats.Text).ToString & vbCrLf & vbCrLf)
End If
End Sub
Private Sub Timer1_Elapsed() Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
GetInfo()
End Sub
Private Sub Form1_Load() Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Interval = 10000 '''十秒刷新
Timer1.Start()
GetInfo()
End Sub
Sub GetInfo() Sub GetInfo() '''获取剪贴板信息
Dim Idata As IDataObject
Idata = System.Windows.Forms.Clipboard.GetDataObject()
If Idata.GetDataPresent(DataFormats.Text) = True Then
If Idata.GetData(DataFormats.Text).ToString = CurInfo Then
Exit Sub
End If
CurInfo = Idata.GetData(DataFormats.Text).ToString
RTBox.AppendText(">>>>>>" & Now & vbCrLf) '''RTBox是一个Richtextbox
RTBox.AppendText(Idata.GetData(DataFormats.Text).ToString & vbCrLf & vbCrLf)
End If
End Sub
Private Sub Timer1_Elapsed() Sub Timer1_Elapsed(ByVal sender As System.Object, ByVal e As System.Timers.ElapsedEventArgs) Handles Timer1.Elapsed
GetInfo()
End Sub