IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Visual Basic - Zugriff auf die Zwischenablage in VB



Zugriff auf die Zwischenablage in VB

Dieser Artikel zeigt, wie Sie mit dem Clipboard-Objekt in VB auf Inhalte der Zwischenablage zugreifen und selbst Text oder Grafiken in der Zwischenablage ablegen können.


Autor: Tobias Surmann (incsoft)
Datum: 11-08-2003, 22:29:49
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 32034x
Rating: 9 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

Viele Anwendungen nutzen - manchmal auch unbewusst - die Windows-Zwischenablage. Zum Beispiel können Sie zur Laufzeit im Kontextmenü einer TextBox die Funktion Kopieren auswählen, die den markierten Text dann in die Zwischenablage überträgt. Ganz unbemerkt wird hierbei der Text auch in andere Formate konvertiert. Nehmen wir mal an, Sie bearbeiten gerade in einem Bildverarbeitungsprogramm eine JPEG-Grafik. Nun möchten Sie diese in ein Word-Dokument kopieren. Dazu kopieren Sie die Grafik in die Zwischenablage, wobei Windows automatisch auch eine Kopie im Bitmap- und im Enhanced MetaFile-Format (Dateiendungen EMF und WMF) erstellt.

Auch Text ist nicht gleich Text. Kommen wir zurück zum Beispiel mit der TextBox. Wenn Sie hier einen Text in die Zwischenablage befördern, werden auch von diesem Text verschiedene Formate erstellt, z.B. normaler Text, Text im Unicode-Format (für verbesserte Ausführungsgeschwindigkeit bei Stringfunktionen) und MS-DOS kompatibler Text mit verschiedenen Sonderzeichen. Dieser Artikel beschäftigt sich mit dem Lesen und Schreiben von Daten in die Zwischenablage. Hierbei werde ich auf die beiden Formate Text und Bitmap eingehen.

Das Clipboard-Objekt

Visual Basic stellt dem Programmierer ein eigenes Objekt Clipboard zur Verfügung, das alle Funktionen rund um die Zwischenablage kapselt. Ich werde Ihnen anhand eines Beispielprojekts zeigen, welche Methoden dass Objekt zur Verfügung stellt und wie Sie damit umgehen.

Beispielprojekt

Für das Beispielprojekt müssen Sie ein Standard-EXE Projekt erstellen und dem Projekt folgende Steuerelemente hinzufügen (das Form-Objekt ist bereits vorhanden):

Steuerelement Name Sonstiges
Form Form1 Caption = "Zugriff auf die Zwischenablage mit VB"
TextBox Text1 Text = ""
MultiLine = True
PictureBox Picture1  
CommandButton CommandButton1 Caption = "Anzeigen"
CommandButton CommandButton2 Caption = "Löschen"
CommandButton CommandButton3 Caption = "Text einfügen"
CommandButton CommandButton4 Caption = "Grafik einfügen"
CommandButton CommandButton5 Caption = "Beenden"


Die TextBox wird für die Anzeige und für das Einfügen von Text in die Zwischenablage benötigt, die PictureBox dient zur Anzeige der in der Zwischenablage enthaltenen Grafik. Für das Einfügen einer Grafik in die Zwischenablage muss die Datei C:\test.bmp vorhanden sein.




Anzeigen des Inhalts der Zwischenablage

CommandButton1 ist für die Anzeige des Inhalts der Zwischenablage zuständig. Hier werden nicht wie für das Einfügen zwei Schaltflächen benötigt, da das Clipboard-Objekt von Visual Basic eine Methode zur Verfügung stellt, die es uns erlaubt das Format der Daten zu lesen. Der Code für den CommandButton1 lautet wie folgt:

Private Sub Command1_Click()
    
      'Wenn Text in der Zwischenablage enthalten ist
      If Clipboard.GetFormat(vbCFText) Then
        
      'evtl. vorhandenes Bild in Picture1 löschen
      Set Picture1.Picture = Nothing
      'Text anzeigen
      Text1.Text = Clipboard.GetText()
        
    ElseIf Clipboard.GetFormat(vbCFBitmap) Then
    
      'evtl. vorhandenen Text in Text1 löschen
      Text1.Text = ""
      'Bild anzeigen
      Set Picture1.Picture = Clipboard.GetData(vbCFBitmap)
        
    Else
    
      'Daten sind in einem anderen Format
      MsgBox "Die Daten aus der Zwischenablage können nicht angezeigt werden!"
      'Löschen beider Steuerelemente
      Set Picture1.Picture = Nothing
      Text1.Text = ""
        
    End If
        
End Sub
Über Clipboard.GetFormat und Übergabe einer Konstanten (entweder vbCFText oder vbCFBitmap) kann man herausfinden, ob Daten im gewünschten Format in der Zwischenablage enthalten sind. Ist dies der Fall, gibt die Funktion True zurück, ansonsten False. Für das Auslesen von Text hat das Clipboard-Objekt eine eigene Funktion GetText, die den Text in der Zwischenablage als String zurückgibt. Für alle anderen Formate gibt es die Methode GetData, die die Daten im gewünschten Format zurückgibt. In diesem Beispiel ist das das Bitmap-Format. Falls keins der beiden Formate in der Zwischenablage enthalten ist, wird eine entsprechende Meldung angezeigt.

Text einfügen

Der Text, der in Text1 geschrieben wurde wird über die Schaltfläche "Text einfügen" in die Zwischenablage kopiert.

Private Sub Command3_Click()
    
    'Text in die Zwischenablage einfügen
    Clipboard.SetText Text1.Text

End Sub
Dafür reicht eine Codezeile. Über SetText wird der gewünschte Wert als erster Parameter an die Funktion übergeben. Die Zwischenablage enthält nun den Text der in Text1 steht.

Grafik einfügen

Fast genauso einfach wie das Einfügen von Text ist das Kopieren einer Grafik in die Zwischenablage. Bitte beachten Sie, dass eine Bitmap namens test.bmp im Verzeichnis C:\ vorhanden sein muss, damit das Programm korrekt ausgeführt werden kann.

Private Sub Command4_Click()

    'Grafik in die Zwischenablage einfügen
    Clipboard.SetData LoadPicture("C:\test.bmp"), vbCfBitmap

End Sub
Über LoadPicture wird die Grafik als Picture-Objekt aus der Datei geladen und direkt der SetData-Methode als erster Parameter übergeben. Als zweiten Parameter erwartet die Funktion eine Konstante, die festlegt, in welchem Format sich die als erster Parameter übergebenen Daten befinden.

Zwischenablage löschen

Auch das Löschen der Zwischenablage geht über das Clipboard-Objekt sehr einfach. Hierfür muss einfach die Methode Clear aufgerufen werden, die keine Parameter erwartet.

Private Sub Command2_Click()

    'Zwischenablage löschen
    Clipboard.Clear
    
    'Anzeige aktualisieren
    Set Picture1.Picture = Nothing
    Text1.Text = ""

End Sub
Der Vollständigkeit halber zum Schluss noch die Funktion zum Beenden.

Private Sub Command3_Click()

    'Programm beenden
    End

End Sub
Fazit

Über das Objekt Clipboard ist es sehr einfach Text und Grafiken in die Zwischenablage zu kopieren und auszulesen. Schwieriger wird es bei benutzerdefinierten Daten oder allgemein bei Daten mit dem das Clipboard-Objekt nicht umgehen kann (z.B. Audiodaten). Benötigt man fortgeschrittene Funktionen für die Zwischenablage, so muss man auf die Windows API zurückgreifen, die mit allen in der Zwischenablage enthaltenen Daten umgehen kann. Nichtsdestotrotz bietet das Clipboard-Objekt eine komfortable Möglichkeit zum Zugriff auf einfache Funktionen der Zwischenablage.


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0