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

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...