乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 1

获得剪贴板中的文件列表(源码)

[复制链接]

13

主题

59

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
111
发表于 2017-9-16 23:47:00 | 显示全部楼层 |阅读模式
Private Declare Function OpenClipboard Lib "USER32" (ByVal hWnd As Long) As Long
Private Declare Function CloseClipboard Lib "USER32" () As Long
Private Declare Function IsClipboardFormatAvailable Lib "USER32" (ByVal wFormat As Long) As Long
Private Declare Function GetClipboardData Lib "USER32" (ByVal wFormat As Long) As Long
'Private Declare Function AbortDoc Lib "gdi32" (ByVal hdc As Long) As Long
'Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
'Private Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
'Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
'Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private 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 Const CF_UNICODETEXT = 13
Private Const CF_HDROP = 15
Private Const MAX_PATH = 260
'Function getClipboardText() As String
'获得剪贴板中的文本
'    Dim lpData As Long
'    Dim nSize As Long
'    Dim hMem As Long
'    Dim s As String
'
'    OpenClipboard ByVal 0&
'    If IsClipboardFormatAvailable(CF_UNICODETEXT) Then
'        hMem = GetClipboardData(CF_UNICODETEXT)
'        lpData = GlobalLock(hMem)
'        nSize = GlobalSize(hMem)
'        s = String(nSize, 0)
'        CopyMemory ByVal StrPtr(s), ByVal lpData, ByVal nSize
'        GlobalUnlock hMem
'        getClipboardText = Left(s, InStr(s, Chr(0)) - 1)
'    End If
'    CloseClipboard
'End Function
Public Function GetClipboardFile() As String()
Dim hDrop As Long
Dim iFile As Long, sFiles() As String
Dim sBuff As String * MAX_PATH
Dim iPos As Long
ReDim sFiles(0)
'sBuff = String$(MAX_PATH, 0) '260,0
Call OpenClipboard(ByVal 0&) '打开剪贴板
If IsClipboardFormatAvailable(CF_HDROP) Then '如果剪贴板内容是文件
    hDrop = GetClipboardData(CF_HDROP) '获得句柄
    If Not hDrop = 0 Then '如果成功
       iFileCount = DragQueryFile(hDrop, -1&, "", 0) '文件数量
       If (iFileCount > 0) Then
          ReDim sFiles(1 To iFileCount) As String
          For iFile = 1 To iFileCount
             DragQueryFile hDrop, iFile - 1, sBuff, MAX_PATH
             iPos = InStr(sBuff, vbNullChar)
             If (iPos  0) Then
                sFiles(iFile) = Left$(sBuff, iPos - 1)
             Else
                sFiles(iFile) = sBuff
             End If
          Next
       End If
    End If
End If
CloseClipboard '关闭
GetClipboardFile = sFiles
End Function
回复

使用道具 举报

0

主题

105

帖子

11

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
103
发表于 2017-9-17 08:12:00 | 显示全部楼层
学习了,谢谢分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 12:18 , Processed in 1.037436 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表