Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ClipBoardReader
MOnsDaR
myCSharp.de - Member



Dabei seit:
Beiträge: 25

Themenstarter:

ClipBoardReader

beantworten | zitieren | melden

ClipboardReader:

Da ich in mehreren Projekten von mir die Technik genutzt habe, Daten aus dem Clipboard zu lesen, habe ich vor einiger Zeit mal einen ClipBoardReader geschrieben.

Einführung:
Ich beziehe mich in der Erklärung auf folgenden Beispielcode:

private ClipboardReader reader;

//init the reader
reader = new ClipboardReader();

//store some regEx to the reader
reader.Add("http://www\\.youtube\\.com/watch\\?v=[a-zA-Z0-9-_]{11}");
reader.Add("gr[ae]y");

//register the eventhandler
reader.ResultFound += reader_ResultFound;

//start the reader
Thread thread = new Thread(reader.Run);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();

Nach der Initialisierung des Readers ist es möglich mit der Methode Add() reguläre Ausdrücke in Stringform hinzuzufügen. Im Beispiel wird zum Einen die Erkennung von Youtube- URLs und zum Anderen die Erkennung des Wortes gray oder grey hinzugefügt.

Das Event ResultFound muss abonniert werden. Über dieses werden die Ergebnisse ausgegeben.

Zuletzt kann man die Run()- Methode des Readers in einem Thread ausführen.

Laufzeitverhalten:
Wenn die Methode Run() läuft, wird in einem bestimmten Intervall (lässt sich einstellen, Standard ist 200ms) das Clipboard nach Texten geprüft, die den übergebenen Regular Expressions entsprechen.
Sobald ein solcher Text gefunden wird, wird das ResultFound- Event ausgelöst. in den EventArgs befindet sich dann eine Liste mit gefundenen Einträgen.

Zu beachten:
- Der Thread muss den ApartmentState.STA gesetzt haben. Dies liegt im Zugriff auf eine Systemkomponente begründet. (Soweit ich das verstanden habe)
- Um den Reader zu beenden, muss man die Eigenschaft Running auf false setzen.

Einsatzbeispiele:
Ich benutze in meinen Projekten diese Komponente um dem User die Eingaben zu erleichtern.
- Ein Programm erwartet nach dem Start eine IP:Port- Kombination. Befindet sich eine solche im Clipboard, wird sie bereits in die entsprechenden TextBoxes eingefügt
- Ein weiteres Programm ermöglicht es, URLs bestimmter Webseiten (Youtube, MyVideo etc) hinzuzufügen. Dies geschieht teils über den ClipboardReader.

Lizenz:
Die Komponente kann in ihrer hier bereitgestellten Form in kommerziellen wie auch nonkommerziellen Projekten eingesetzt werden. Es steht euch frei, sie zu verändern. Auf gutdeutsch: Macht was ihr wollt damit.
Es wäre natürlich schön, hin und wieder zu erfahren, ob und wo ihr den Reader eingesetzt habt.

Über Feedback werde ich mich sicherlich nicht beklagen.

Viel Spaß bei der Nutzung,
MOnsDaR

Clipboard Zwischenablage ClipboardReader Reader Regex Regular Expression
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von MOnsDaR am .
Attachments
Meine Projekte:
ClipboardReader
MusicMasher (auf Eis gelegt)
PAMTracker 4.02
private Nachricht | Beiträge des Benutzers
pdelvo
myCSharp.de - Member

Avatar #avatar-3354.png


Dabei seit:
Beiträge: 1.346

beantworten | zitieren | melden

Das sieht sehr Gut aus, wirklich. Ich hab nur eine Sache zum meckern. ICh würde das STarten des Threads in der Run Methode vornehmen. so kann man das noch leichter benutzen.

Gruß pdelvo
private Nachricht | Beiträge des Benutzers
MOnsDaR
myCSharp.de - Member



Dabei seit:
Beiträge: 25

Themenstarter:

beantworten | zitieren | melden

Das habe ich auch schon überlegt. Weiterhin wäre es etwas leichter zu bedienen, wenn man dann eine Stop()- Methode hätte und Running private wäre.

So könnte man via Start() und Stop() alles regeln.

Habe zur Zeit leider einiges um die Ohren, werde mich dem aber annehmen, sobald etwas mehr Zeit zur Verfügung steht.
Meine Projekte:
ClipboardReader
MusicMasher (auf Eis gelegt)
PAMTracker 4.02
private Nachricht | Beiträge des Benutzers
SpyderZ3r0
myCSharp.de - Member



Dabei seit:
Beiträge: 6

beantworten | zitieren | melden

hi
ich hab ein problem mit add()
ich versteh das mit {11} nicht kannste das mal erklären?
private Nachricht | Beiträge des Benutzers
winSharp93
myCSharp.de - Experte

Avatar #avatar-2918.png


Dabei seit:
Beiträge: 5.742
Herkunft: Stuttgart

beantworten | zitieren | melden

Hallo SpyderZ3r0,
Zitat von MOnsDaR
Nach der Initialisierung des Readers ist es möglich mit der Methode Add() reguläre Ausdrücke in Stringform hinzuzufügen
Das "{11}" gehört zum Pattern - siehe [Artikel] Regex-Tutorial
private Nachricht | Beiträge des Benutzers
zommi
myCSharp.de - Member

Avatar #avatar-2617.png


Dabei seit:
Beiträge: 1.361
Herkunft: Berlin

beantworten | zitieren | melden

Hi,

ich bin gerade auf den Artikel gestoßen und wollte noch einen Verbesserungsvorschlag einbringen.
Zitat von MOnsDaR
Wenn die Methode Run() läuft, wird in einem bestimmten Intervall (lässt sich einstellen, Standard ist 200ms) das Clipboard nach Texten geprüft, die den übergebenen Regular Expressions entsprechen.

Das Polling des Clipboards ist irgendwie unschön.
Das Modul sollte sich lieber als ClipboardViewer registrieren.
Das wäre eleganter.
Und eine mögliche Problematik, dass jemand ein ganz flinker CopyPaster ist und die Polling-Zeit zu grob ist, wäre damit auch gegessen.

Erfordert zwar etwas Interop mit der nativen WinAPI, der sich aber lohnt.

beste Grüße
zommi
private Nachricht | Beiträge des Benutzers