vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Windows/System22.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, WinMEViews:  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

 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.