Clipboard-Update ohne KeyHook erkennen

Coalminer

Mitglied
Folgendes Problem gilt es zu lösen:
Beim kopieren eines Strings in die Zwischenablage soll geprüft werden ob der String einem bestimmten Regulären Ausdruck entspricht. Wenn ja soll eine exe gestartet werden die als Übergabeparameter einen Teilstring des Strings in der Zwischenablage bekommt.

Das Lesen der Zwischenablage und das aufrufen der exe mit Parameter ist alles kein Problem.
Mein Problem ist es zu erkennen, dass das ClipBoard upgedated wurde.
Ich hab das zunächst über einen KeyHook auf [Strg-C] gelöst. Das funktioniert aber nicht wie es soll, da der KeyHook schneller meinenen ProgrammCode startet, als wie das ClipBoard tatsächlich upgedated wurde. D.h. mein Programm prüft ob der vorhergehende ClipBoard-Eintrag dem Regex entsprach :-(
Das zweite Problem bei der Lösung: Benutz der User die Maus zum kopieren und nicht [Strg+C] reagiert mein Programm nicht.

Weiss jemand wie ich sonst noch ein Update des Clipboards abfangen kann?
 
Hallo

Du könntest über einen Timer die Zwischenablage prüfen und bei einer Änderung reagieren.

Beispiel:
Code:
Public Class Form1
    Private cText As String

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Clipboard.GetText <> cText Then
            cText = Clipboard.GetText
            MsgBox("Zwischenablage hat sich geändert")
        End If
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        cText = Clipboard.GetText
        Me.Timer1.Interval = 1000
        Me.Timer1.Start()
    End Sub
End Class
 
Danke wincnc fürs Antworten :)
Da haben wir wohl gleichzeitig gepostet.

Das mit dem Pollen hatte ich mir auch überlegt.
Ist aber, wie ich finde, immer etwas unschön da wenn nichts passiert trotzdem Laufzeit verbraten wird.
Wenns mal schnell gehen muss, und man sich den komplexen Vorgang der Clipboard-Chain (siehe link oben) nicht zutraut, sicher eine erwähnenswerte Möglichlichkeit das Problem zu lösen.
 

Neue Beiträge

Zurück