vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Windows/System22.03.05
OpenClipboard-Funktion

Diese Funktion öffnet die Zwischenablage für das aktuelle Programm. Erst nach dem Aufruf dieser Funktion können die anderen Clipboard-Funktionen aufgerufen werden.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  13.540 

Deklaration:

Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long

Beschreibung:
Diese Funktion öffnet die Zwischenablage für das aktuelle Programm. Erst nach dem Aufruf dieser Funktion können die anderen Clipboard-Funktionen aufgerufen werden.

Parameter:
hwndErwartet das Fensterhandle der Anwendung, die die Zwischenablage öffnen möchte.

Rückgabewert:
Ist die Funktion erfolgreich, so ist die Rückgabe ein Wert "ungleich 0", andernfalls wird der wert "0" zurückgegeben. Für erweiterte Fehlerinformationen rufenSie 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 de Zwischenablage ist ein Handle  
' zu einer %BITMAPINFO%-Struktur
Private Const CF_DIBV5 = 17 ' (Win 2000/XP) Das  Objekt in de 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 eine Sprach-ID,   
' die für Text-Strings 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 einem 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 der Zwischenablage sind Daten zu  
' einem Microsoft Pen-Extension
Private Const CF_PRIVATEFIRST = &H200 ' Das Objekt in der Zwischenablage ist  
' ein privates Handle
Private Const CF_PRIVATELAST = &H2FF ' Das Objekt in der Zwischenablage ist  
' ein privates 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
' Inhalt der Zwischenablage 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 Formt Bildfeld leeren
    Picture1.Cls
  End Select
End Sub

Diese Seite wurde bereits 13.540 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel