Bitmap aus Zwischenablage

adamarc

Grünschnabel
Guten Abend,
ich hab mich nach einer langen Pause mal wieder ans Programmieren gemacht und hab direkt einen Fehler den ich nicht beheben kannst.

Ich will, wenn einer die Druck-Taste drück das Bild aus der Zwischenablage in eine Imagebox laden. Das abfragen der Druck-Taste und das abfragen der Zwischenablage klappt soweit nur bekomm ich den Handle der Bitmap nicht in die Imagebox geladen.

Code:
Public Class Form1
    Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Keys) As Short
    Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Integer) As Integer
    Declare Function CloseClipboard Lib "user32" () As Long
    Declare Function GetClipboardData Lib "user32" ( _
      ByVal wFormat As Integer) As Integer


    ' BitBlt dwRop-Konstante
    Const SRCCOPY = &HCC0020

    ' Zwischenablage-Format-Konstanten
    Const CF_BITMAP = 2 ' Das Objekt in der Zwischenablage ist ein Handle  
    ' eines Bitmaps

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim hBitmap As Integer

        If GetAsyncKeyState(44) = -32767 Then
            erfolg.Text = "Screenshot erstellt!"

            ' Zwischenablage öffnen
            OpenClipboard(Me.Handle)
            MsgBox(GetClipboardData(2))
            ' Bitmap dem Bildfeld zuweisen
            hBitmap = GetClipboardData(CF_BITMAP)
            hBitmap = New IntPtr(hBitmap)
            PictureBox1.Image.FromHbitmap(hBitmap)
            PictureBox1.Refresh()

            ' Zwischenablage schließen
            CloseClipboard()
        End If
    End Sub


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Timer1.Start()
    End Sub

    
End Class

Vielen Dank
 
Hallo

Das geht auch einfacher:
Visual Basic:
Public Class Form1
    Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Keys) As Short

    ' BitBlt dwRop-Konstante
    Const SRCCOPY = &HCC0020

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If GetAsyncKeyState(44) = -32767 Then
            erfolg.Text = "Screenshot erstellt!"
            Me.PictureBox1.Image = Clipboard.GetImage
        End If
    End Sub
End Class
 

Neue Beiträge

Zurück