微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VB 将长路径转为短路径 & 获取剪粘板中的文件的列表

将长路径转为短路径

Private Declare Function GetShortPathName Lib "kernel32" Alias "GetShortPathNameA" (ByVal lpszLongPath As String,ByVal lpszShortPath As String,ByVal cchBuffer As Long) As Long
Private Function ShortPath(ByVal FileName As String) As String
Dim S As String
On Error GoTo exitFunc:
S = String(255," ")
GetShortPathName FileName,S,255
ShortPath = Left(S,InStr(S,Chr(0)) - 1)
exitFunc:
End Function

获取剪粘板中的图片文件的列表

Private Const CF_HDROP = 15

Private Type POINT
x As Long
y As Long
End Type

Private Type DROPFILES
pFiles As Long
pt As POINT
fNC As Long
fWide As Long
End Type

Private Declare Function GlobalSize 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 Function OpenClipboard Lib "user32" _
(ByVal hwnd As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function GetClipboardData Lib "user32" _
(ByVal wFormat As Long) As Long

Private Declare Sub copyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(Destination As Any,Source As Any,ByVal Length As Long)

Public mvarfilelist As String

Public Function ShowFilesOnClipboard() As String Dim lHandle As Long Dim lpResults As Long Dim lRet As Long Dim df As DROPFILES Dim strDest As String Dim lBufferSize As Long Dim arBuffer() As Byte Dim vNames As Variant Dim i As Long ShowFilesOnClipboard = "" If OpenClipboard(0) Then lHandle = GetClipboardData(CF_HDROP) ' If you don't find a CF_HDROP,you don't want to process anything If lHandle > 0 Then lpResults = GlobalLock(lHandle) lBufferSize = GlobalSize(lpResults) ReDim arBuffer(0 To lBufferSize) copyMemory df,ByVal lpResults,Len(df) Call copyMemory(arBuffer(0),ByVal lpResults + df.pFiles,_ (lBufferSize - Len(df))) If df.fWide = 1 Then ' it is wide chars--unicode strDest = arBuffer Else strDest = StrConv(arBuffer,vbUnicode) End If GlobalUnlock lHandle vNames = Split(strDest,vbNullChar) i = 0 While Len(vNames(i)) > 0 ShowFilesOnClipboard = ShowFilesOnClipboard & "<img src='file:///" & ShortPath(vNames(i)) & "'><br>" i = i + 1 Wend End If End If CloseClipboard End Function

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐