Rubrik: Windows/System | 22.03.05 |
CloseClipboard-Funktion Diese Funktion schließt die Zwischenablage für das aktuelle Programm, so dass keine weiteren Clipboard-Funktions-Aufrufe möglich sind. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 9.819 |
Deklaration:
Declare Function CloseClipboard Lib "user32" () As Long
Beschreibung:
Diese Funktion schließt die Zwischenablage für das aktuelle Programm, sodass keine weiteren Clipboard-Funktions-Aufrufe möglich sind.
Parameter:
keine |
Rückgabewert:
Ist die Funktion erfolgreich so ist die Rückgabe ein Wert "ungleich 0", andernfalls wird derWert "0" zurückgegeben. Für erweiterte Fehlerinformationen rufen Sie die GetLastError-Funktion auf.
Beispiel:
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function EnumClipboardFormats Lib "user32" ( _ ByVal wFormat As Long) As Long Private Declare Function CountClipboardFormats Lib "user32" () As Long Private Declare Function GetClipboardData Lib "user32" ( _ ByVal wFormat As Long) As Long Private Declare Function GetClipboardFormatName Lib "user32" _ Alias "GetClipboardFormatNameA" ( _ ByVal wFormat As Long, _ ByVal lpString As String, _ ByVal nMaxCount As Long) As Long Private Declare Function lstrlen Lib "kernel32" _ Alias "lstrlenA" ( _ ByVal lpString As Any) As Long Private Declare Function lstrcpy Lib "kernel32" _ Alias "lstrcpyA" ( _ ByVal lpString1 As Any, _ ByVal lpString2 As Any) As Long Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function GlobalUnlock Lib "kernel32" ( _ ByVal hMem As Long) As Long Private Declare Function SelectObject Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal hObject As Long) As Long ' BitBlt dwRop-Konstante Private Const SRCCOPY = &HCC0020 ' Zwischenablage Format-Konstanten Private Const CF_BITMAP = 2 ' Das Objekt in der Zwischenablage ist ein Handle eines Bitmaps Private Const CF_DIB = 8 ' Das Objekt in der Zwischenablage ist ein Handle _ ' zu einer %BITMAPINFO%-Struktur Private Const CF_DIBV5 = 17 ' (Win 2000/XP) Das Objekt in der Zwischenablage _ ' ist ein Handle zu einer %BITMAPV5HEADER%-Struktur Private Const CF_DIF = 5 ' Das Objekt in der Zwischenablage ist ein _ ' "Software Arts' Data Interchange Format" Private Const CF_DSPBITMAP = &H82 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu einem Bitmap in einem Privaten Format Private Const CF_DSPENHMETAFILE = &H8E ' Das Objekt in der Zwischenablage _ ' ist ein Handle zu einer Enhanced Metadatei in einem Privaten Format Private Const CF_DSPMETAFILEPICT = &H83 ' Das Objekt in der Zwischenablage _ ' ist Handle zu einer Meta Grafik in einem Privaten Format Private Const CF_DSPTEXT = &H81 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu einem String in einem Privaten Format Private Const CF_ENHMETAFILE = 14 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu einer Enhanced Metadatei Private Const CF_GDIOBJFIRST = &H300 ' Das Objekt in der Zwischenablage ist _ ' ein GID-Objekt (Wird beim leeren der Zwischenablage nicht gelöscht) Private Const CF_GDIOBJLAST = &H3FF ' Das Objekt in der Zwischenablage ist _ ' ein GID-Objekt (Wird beim leeren der Zwischenablage nicht gelöscht) Private Const CF_HDROP = 15 ' Das Objekt in der Zwischenablage ist eine _ ' Liste von Dateihandles Private Const CF_LOCALE = 16 ' Das Objekt in der Zwischenablage ist ein _ ' Sprach-ID der für Text-Stings in der Zwischenablage benutzt wurde Private Const CF_METAFILEPICT = 3 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu einem Metafile Bild Private Const CF_OEMTEXT = 7 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu eime OEM-String Private Const CF_OWNERDISPLAY = &H80 ' Das Objekt in der Zwischenablage ist _ ' ein Benutzerdefinierter Anzeigetyp Private Const CF_PALETTE = 9 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu einer Palette Private Const CF_PENDATA = 10 ' Das Objekt in der Zwischenablage sind Daten zu _ ' einem Microsoft Pen Extensions Private Const CF_PRIVATEFIRST = &H200 ' Das Objekt in der Zwischenablage ist _ ' ein privater Handle Private Const CF_PRIVATELAST = &H2FF ' Das Objekt in der Zwischenablage ist _ ' ein privater Handle Private Const CF_RIFF = 11 ' Das Objekt in der Zwischenablage ist ein Handle _ ' zu einer Audiodatei Private Const CF_SYLK = 4 ' Das Objekt in der Zwischenablage ist ein _ ' Symbolischer Link Private Const CF_TEXT = 1 ' Das Objekt in der Zwischenablage ist ein Handle _ ' zu einem String Private Const CF_WAVE = 12 ' Das Objekt in der Zwischenablage ist ein Handle _ ' zu einer Wavedatei Private Const CF_TIFF = 6 ' Das Objekt in der Zwischenablage ist ein Handle _ ' zu einem Tiff-Bitmap Private Const CF_UNICODETEXT = 13 ' Das Objekt in der Zwischenablage ist ein _ ' Handle zu einem Unicode-String
' Zwischenablage Inhalt ermitteln Private Sub Command1_Click() Dim Retval As Long, lngFormat As Long, strFormat As String * 256, i As Integer ' Liste leeren List1.Clear ' Zwischenablage öffnen Call OpenClipboard(Me.hwnd) ' Anzahl der verschiedenen Formate der Zwischenablage ermitteln Debug.Print "Anzahl verschiedender Clipboard-Formate: " & CountClipboardFormats() Do i = i + 1 ' Das nächste Format aus der Zwischenablage ermitteln lngFormat = EnumClipboardFormats(lngFormat) If lngFormat = 0 Then Exit Do ' Format auswerten Select Case lngFormat Case CF_TEXT strFormat = "Text" & vbNullChar Case CF_BITMAP strFormat = "Bitmap" & vbNullChar Case CF_WAVE strFormat = "Wavedatei" & vbNullChar ' case... für weitere Formattypen Case Else ' Benutzerdefinierten Typ ermitteln If GetClipboardFormatName(lngFormat, strFormat, _ Len(strFormat)) = 0 Then strFormat = "Unbekannt" & vbNullChar End If End Select List1.AddItem Format$(i, "00") & ": " & Left$(strFormat, InStr(1, _ strFormat, vbNullChar) - 1) & " (" & CStr(lngFormat) & ")" List1.ItemData(List1.NewIndex) = lngFormat Loop ' Clipboard schließen Call CloseClipboard End Sub
' Selektierte CF_TEXT oder CF_BITMAP der Zwischenablage im Bildfeld anzeigen Private Sub List1_Click() Dim hBitmap As Long, TmpStr As String, StrLen As Long, hTmpStr As _ Long, pTmpStr As Long Select Case List1.ItemData(List1.ListIndex) Case CF_TEXT ' Text in das Bildfeld zeichnen ' Zwischenablage öffnen OpenClipboard Me.hwnd ' 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) ' Pointer zerstören um Ressourcen zu sparen GlobalUnlock hTmpStr ' Zwischenablage schließen CloseClipboard ' String im Bildfeld anzeigen Picture1.Cls Picture1.Print TmpStr Case CF_BITMAP ' Bitmap aus der Zwischenablage in das Bildfeld kopieren ' Zwischenablage öffnen OpenClipboard Me.hwnd ' Bitmap dem Bildfeld zuweisen hBitmap = GetClipboardData(CF_BITMAP) SelectObject Picture1.hdc, hBitmap Picture1.Refresh ' Zwischenablage schließen CloseClipboard Case Else ' Bei einem nichtunterstützten Format Bildfeld leeren Picture1.Cls End Select End Sub