2009-12-11 6 views
23

Ich bin verwirrt darüber, was die Funktionalität von Kopieren und Einfügen implementiert. Dies ist genau das, was ich bin verwirrt:Wie funktioniert das Kopieren von formatiertem Text?

Wenn ich formatierten Text von MS Word (die eine andere Auszeichnungssprache als HTML verwendet) kopieren und in einem RTF-Editor in einem Webbrowser wie Google Mail oder http://www.freerichtexteditor.com/index.php?inc=demo/index einfügen, bleibt die Formatierung erhalten aber jetzt wird das Markup in HTML konvertiert. Wie ist es passiert? Was hat sich um die Umstellung gekümmert?

Und wenn ich diesen Text in eine andere Anwendung eingefügt hätte, wird es in dieses Format konvertiert. Wenn ich eine HTML-Seite kopiere und sie in Word einfüge, dann wird es eine Markup-Konvertierung von HTML zu Word geben. Nochmal, wie?

Dann, wenn ich diesen kopierten formatierten Text in einen Texteditor wie Editor einfügen, dann ist die gesamte Formatierung verloren und Markup ist abgestreift. Welche Anwendung hat das Markup entfernt und in Klartext umgewandelt?

Wenn ich formatierten Text kopiere, was genau wird in die Zwischenablage kopiert? Ich bin ein .NET C# -Programmierer. Wie würde ich das programmieren?

Antwort

7

Die Daten in der Zwischenablage wird mit FORMATETC Datensätze erweitert:

http://msdn.microsoft.com/en-us/library/ms682177%28VS.85%29.aspx

Der FORMATETC Datensatz enthält als erstes Feld ein cfFormat Element, das das Dateiformat beschreibt. kann ein vordefinierter Wert wie CF_UNICODETEXT oder CF_BITMAP oder ein anwendungsdefinierter Typ sein, der z. Microsoft Word.

In .NET können Sie offenbar abfragen, um die Clipboard Objekt, um herauszufinden, welche Datenformate enthält:

http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

Verfahren Sie suchen, ist Clipboard.SetData:

Wenn Sie das tun Wenn Sie das Format der Zielanwendung nicht kennen, können Sie mit dieser Methode Daten in mehreren Formaten speichern.

Daten, die mit dieser Methode gespeichert wurden, können beim Abrufen in ein kompatibles Format konvertiert werden.

Um Daten aus der Zwischenablage in einem bestimmten Format abzurufen, zunächst die ContainsData Methode verwenden, um zu bestimmen, ob die Zwischenablage Daten in diesem Format enthält, bevor es mit der Methode GetData

In Bezug auf Ihre konkrete Frage Abrufen, wie es funktioniert in Word, die obigen Links sollten Ihnen genügend Informationen geben, um selbst einen kleinen Zwischenablage-Viewer zu schreiben. Da Microsoft Word HTML-Dateien ausgeben kann, schätze ich, dass Word die Daten in der Zwischenablage als einfachen Text, HTML, RTF und im Word-Format schreibt.

3

Es gibt einige Zwischenablage Viewer (clipbrd.exe in win xp zum Beispiel), die Sie verwenden können, um zu sehen, welche Daten in der Zwischenablage gespeichert werden, ist dieses Verhalten, weil Quellanwendung oder Ziel (die genau Sie von Zwischenablage-Viewer finden) unterstützt wird diese Art von Daten, und in geeigneter Weise konvertiert.

+0

so etwas für Windows 7? – claws

+0

clip.exe ersetzt clipbrd.exe in Windows 7 –

+0

clip.exe ist ein Befehlszeilenprogramm. Sein Zweck ist nicht zu sehen, sondern etwas von der Kommandozeile in die Zwischenablage zu senden. wie dir | Clip; clip claws

6

Zwei Dinge passieren, um diese Arbeit zu machen. Zunächst kopieren die Quellanwendungen die Daten möglichst in mehreren Formaten in die Zwischenablage. Zum Beispiel könnte es HTML-, RTF-, DOC- und Nur-Text-Formate liefern. Zweitens wird die Zielanwendung so geschrieben, dass sie nach Möglichkeit aus mehreren Formaten eingefügt werden kann. Zum Beispiel könnte es zuerst nach RTF suchen und wenn das nicht verfügbar ist, kann es reinen Text einfügen und wenn keiner verfügbar ist, kann es überhaupt nicht eingefügt werden.

Es ist eine Weile her, seit ich die Zwischenablage-Funktionen verwendet habe, aber wenn ich mich richtig erinnere, ist es für die Quellanwendung möglich, anzugeben, welche Formate es bieten kann, ohne die vollständige Konvertierung und Datenübertragung in die Zwischenablage durchzuführen. Die tatsächliche Konvertierung wird nur durchgeführt, wenn einige andere Anwendungen die Daten tatsächlich aus der Zwischenablage in einem bestimmten Format anfordern.

Verwandte Themen