实现如下图片当中的效果给个完整实现的代码,谢谢啦

解决方案 »

  1.   

    对了,不要再给Clipboard.SetData LoadPicture("c:\1.bmp") 
    这类的代码了,
    我要复制那种,想要复制什么格式都可以的代码
      

  2.   

    好吧,蛋疼一回,给你代码。
    Option Explicit
    Private Type POINTAPI
    x As Long
    y As Long
    End TypePrivate Type SHFILEOPSTRUCT
        hwnd As Long
        wFunc As Long
        pFrom As String
        pTo As String
        fFlags As Integer
        fAnyOperationsAborted As Long
        hNameMappings As Long
        lpszProgressTitle As String
    End Type
    Private Declare Function SHFileOperation Lib "shell32.dll" Alias _
            "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long''剪贴版处理函数
    Private Declare Function EmptyClipboard Lib "user32" () As Long
    Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function CloseClipboard Lib "user32" () As Long
    Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
    Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
    Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As LongPrivate Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal hDrop As Long, ByVal UINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
    Private Declare Function DragQueryPoint Lib "shell32.dll" (ByVal hDrop As Long, lpPoint As POINTAPI) As Long
    Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
    Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) 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 Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)'剪贴版数据格式定义
    Private Const CF_TEXT = 1
    Private Const CF_BITMAP = 2
    Private Const CF_METAFILEPICT = 3
    Private Const CF_SYLK = 4
    Private Const CF_DIF = 5
    Private Const CF_TIFF = 6
    Private Const CF_OEMTEXT = 7
    Private Const CF_DIB = 8
    Private Const CF_PALETTE = 9
    Private Const CF_PENDATA = 10
    Private Const CF_RIFF = 11
    Private Const CF_WAVE = 12
    Private Const CF_UNICODETEXT = 13
    Private Const CF_ENHMETAFILE = 14
    Private Const CF_HDROP = 15
    Private Const CF_LOCALE = 16
    Private Const CF_MAX = 17' Global Memory Flags
    Private Const GMEM_FIXED = &H0
    Private Const GMEM_MOVEABLE = &H2
    Private Const GMEM_NOCOMPACT = &H10
    Private Const GMEM_NODISCARD = &H20
    Private Const GMEM_ZEROINIT = &H40
    Private Const GMEM_MODIFY = &H80
    Private Const GMEM_DISCARDABLE = &H100
    Private Const GMEM_NOT_BANKED = &H1000
    Private Const GMEM_SHARE = &H2000
    Private Const GMEM_DDESHARE = &H2000
    Private Const GMEM_NOTIFY = &H4000
    Private Const GMEM_LOWER = GMEM_NOT_BANKED
    Private Const GMEM_VALID_FLAGS = &H7F72
    Private Const GMEM_INVALID_HANDLE = &H8000
    Private Const GHND = (GMEM_MOVEABLE Or GMEM_ZEROINIT)
    Private Const GPTR = (GMEM_FIXED Or GMEM_ZEROINIT)Private Const FO_COPY = &H2Private Type DROPFILES
    pFiles As Long
    pt As POINTAPI
    fNC As Long
    fWide As Long
    End TypePublic Function ClipboardCopyFiles(files() As String) As BooleanDim data As String
    Dim df As DROPFILES
    Dim hGlobal As Long
    Dim lpGlobal As Long
    Dim i As Long'清除剪贴版中现存的数据
    If OpenClipboard(0&) Then
    Call EmptyClipboardFor i = LBound(files) To UBound(files)
    data = data & files(i) & vbNullChar
    Next
    data = data & vbNullCharhGlobal = GlobalAlloc(GHND, Len(df) + LenB(data))
    If hGlobal Then
    lpGlobal = GlobalLock(hGlobal)df.pFiles = Len(df)
    Call CopyMem(ByVal lpGlobal, df, Len(df))
    Call CopyMem(ByVal (lpGlobal + Len(df)), ByVal data, LenB(data))
    Call GlobalUnlock(hGlobal)If SetClipboardData(CF_HDROP, hGlobal) Then
    ClipboardCopyFiles = True
    End If
    End IfCall CloseClipboard
    End IfEnd Function
    Private Sub Command1_Click()
    Dim files(1) As String
    files(0) = "d:\xxx.doc" '路径加后缀名
    ClipboardCopyFiles files 
    End Sub