tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
155
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Coalminer Coalminer ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    66
    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?
     

  2. #2
    Avatar von wincnc
    wincnc wincnc ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    632
    Hallo

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

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    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
     

  3. #3
    Coalminer Coalminer ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    66
    Hi, da war ich wohl zu schnell mit der Frage hier im Forum.
    Habs mittels Suchmaschine gefunden wies geht:
    http://www.developer.com/net/csharp/article.php/3359891
    Das Tutorial ist wirklich gut verständlich geschrieben.
     

  4. #4
    Coalminer Coalminer ist offline Mitglied Silber
    Registriert seit
    Aug 2004
    Beiträge
    66
    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.
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 06.08.08, 15:08
  2. Update ohne ganze Seite neu zu laden
    Von thespecialx im Forum Coders Talk
    Antworten: 2
    Letzter Beitrag: 23.12.05, 11:23
  3. Antworten: 10
    Letzter Beitrag: 30.11.05, 18:01
  4. Antworten: 6
    Letzter Beitrag: 29.11.05, 08:33
  5. Statischer Fensterhintergrung ohne Update
    Von Prongo im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 08.02.05, 08:47