ZooFlow: Add Clipboard Watcher Class
This commit is contained in:
64
GUIs.ZooFlow/ClipboardWatcher/Watcher.vb
Normal file
64
GUIs.ZooFlow/ClipboardWatcher/Watcher.vb
Normal file
@@ -0,0 +1,64 @@
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
Namespace ClipboardWatcher
|
||||
Public Class Watcher
|
||||
Inherits NativeWindow
|
||||
Implements IDisposable
|
||||
|
||||
Public Event ClipboardChanged As EventHandler(Of IDataObject)
|
||||
Public Shared Singleton As New Watcher
|
||||
|
||||
Private _Handle As IntPtr
|
||||
|
||||
Private Sub New()
|
||||
MyBase.CreateHandle(New CreateParams)
|
||||
_Handle = ClassWin32.SetClipboardViewer(Handle)
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub WndProc(ByRef m As Message)
|
||||
Select Case m.Msg
|
||||
Case ClassWin32.WM_DRAWCLIPBOARD
|
||||
Dim oData As IDataObject = Clipboard.GetDataObject
|
||||
RaiseEvent ClipboardChanged(Me, oData)
|
||||
End Select
|
||||
MyBase.WndProc(m)
|
||||
End Sub
|
||||
|
||||
#Region "IDisposable Support"
|
||||
' Für diese Klasse ist korrekte Ressourcenbereinigung besonders wichtig, da
|
||||
' mit systemübergreifenden Ressourcen gearbeitet wird
|
||||
|
||||
' So ermitteln Sie überflüssige Aufrufe
|
||||
Private _DisposedValue As Boolean = False
|
||||
|
||||
Protected Overridable Sub Dispose(ByVal pDisposing As Boolean)
|
||||
If Not _DisposedValue Then
|
||||
If pDisposing Then
|
||||
' TODO: Verwaltete Ressourcen freigeben, wenn sie explizit
|
||||
' aufgerufen werden
|
||||
End If
|
||||
MyBase.DestroyHandle()
|
||||
Dim H As IntPtr = ClassWin32.SetClipboardViewer(_Handle)
|
||||
End If
|
||||
_DisposedValue = True
|
||||
End Sub
|
||||
|
||||
' Dieser Code wird von Visual Basic hinzugefügt, um das Dispose-Muster
|
||||
' richtig zu implementieren.
|
||||
Public Sub Dispose() Implements IDisposable.Dispose
|
||||
' Sie sollten diesen Code nicht ändern, sondern stattdessen ihren
|
||||
' Bereinigungscode oben in
|
||||
' Dispose(ByVal disposing As Boolean) einfügen.
|
||||
Dispose(True)
|
||||
System.GC.SuppressFinalize(Me)
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub Finalize()
|
||||
MyBase.Finalize()
|
||||
Dispose(False)
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
|
||||
Reference in New Issue
Block a user