Hallo,
ich nutze das RTF-Textfeld von Lebans
www.lebans.com/richtext.htm
in meiner Applikation. Nun möchte ich nicht das Bilder (NUR Text) reinkopiert werden ([STRG]+[V]. Also habe ich eine Funktion gefunden die prüft, ob sich Text in der Zwischenablage befindet. Wenn ja kann eingefügt werden. Bei allen anderen Format kommt eine Fehlermeldung, das nur Text eingefügt werden kann. Das funktioniert soweit auch. Code kommt unten.
Allerdings treten nun 2 Probleme auf. Wenn ein Bild in der Zwischenablage ist, kommt ja die Fehlermeldung. Bestätigt man die mit "Ja" wird ein " v " eingefügt. Was kann ich tun damit das nicht passiert.
Das 2.Problem ist wenn man zB aus Word heraus Text und Bild in der Zwischenablage sind, wird auch das Bild eingefügt. Was kann ich tun damit nur der Text eingefügt wird.
Public Function IsClibboardText() As Boolean
Dim bolResult As Boolean
bolResult = False
Dim hTmpStr As Long
Dim pTmpStr As Long
Dim TmpStr As String
' Zwischenablage öffnen
Call OpenClipboard(0)
' Anzahl der verschiedenen Formate der Zwischenablage ermitteln
' Debug.Print "Anzahl verschiedender Clipboard-Formate: " & CountClipboardFormats()
' Prüfen, welche Datenformate sich in der
' Zwischenablage befinden
For I = 0 To CountClipboardFormats - 1
lngFormat = EnumClipboardFormats(lngFormat)
If lngFormat = 0 Then Exit For
' Format auswerten
Select Case lngFormat
Case CF_TEXT
' Handle zum String ermitteln
hTmpStr = GetClipboardData(CF_TEXT)
' Pointer des Strings ermitteln
pTmpStr = GlobalLock(hTmpStr)
' String in eine Variable kopieren
TmpStr = Space(lstrlen(ByVal pTmpStr))
Call lStrCpy(TmpStr, ByVal pTmpStr)
Debug.Print " text aus der Zwischenablage: " & TmpStr
' Pointer zerstören um Ressourcen zu sparen
GlobalUnlock hTmpStr
Call CloseClipboard
bolResult = True
IsClibboardText = bolResult
Exit Function
Case Else
End Select
Next I
IsClibboardText = bolResult
Call CloseClipboard
End Function
Der Code der das Einfügen von Bildern verhindert:
If Not IsClibboardText Then
KeyCode = 0
MsgBox "Fehler", vbCritical + vbOKOnly, "Hinweis"
End If