;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
鍒╃敤ShellAPI鍑芥暟寮瑰嚭鏂囦欢澶规祻瑙堢獥鍙 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VB >> VBAPI >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

鍒╃敤ShellAPI鍑芥暟寮瑰嚭鏂囦欢澶规祻瑙堢獥鍙

鍙戝竷: 2008-7-15 14:41 |  浣滆: 缃戠粶杞浇 |   鏉ユ簮: 缃戠粶杞浇 |  鏌ョ湅: 32娆

'杩欎釜绋嬪簭婕旂ず鍒╃敤Shell API鍑芥暟寮瑰嚭鏂囦欢澶规祻瑙堢獥鍙

'

'浣滆 闄堥攼

'EMail develope@163.net

' blackcat@nease.net

'WebSite http://vbtip.syeah.net

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _

"SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long

Private Declare Function SHGetSpecialFolderLocation Lib _

"shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder _

As Long, pIdl As ITEMIDLIST) As Long

Private Declare Function SHGetFileInfo Lib "Shell32" Alias _

"SHGetFileInfoA" (ByVal pszPath As Any, ByVal _

dwFileAttributes As Long, psfi As SHFILEINFO, ByVal _

cbFileInfo As Long, ByVal uFlags As Long) As Long

Private Declare Function ShellAbout Lib "shell32.dll" Alias _

"ShellAboutA" (ByVal hwnd As Long, ByVal szApp As _

String, ByVal szOtherStuff As String, ByVal hIcon As Long) _

As Long

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _

Alias "SHGetPathFromIDListA" (ByVal pIdl As Long, ByVal _

pszPath As String) As Long

Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)

Const MAX_PATH = 260

Private Type SHITEMID

cb As Long

abID() As Byte

End Type

Private Type ITEMIDLIST

mkid As SHITEMID

End Type

Private Type BROWSEINFO

hOwner As Long

pidlRoot As Long

pszDisplayName As String

lpszTitle As String

ulFlags As Long

lpfn As Long

lParam As Long

iImage As Long

End Type

Private Type SHFILEINFO

hIcon As Long

iIcon As Long

dwAttributes As Long

szDisplayName As String * MAX_PATH

szTypeName As String * 80

End Type

Private Function GetFolderValue(wIdx As Integer) As Long

If wIdx < 2 Then

GetFolderValue = 0

ElseIf wIdx < 12 Then

GetFolderValue = wIdx

Else

GetFolderValue = wIdx + 4

End If

End Function

Private Sub Command1_Click()

Dim BI As BROWSEINFO

Dim nFolder As Long

Dim IDL As ITEMIDLIST

Dim pIdl As Long

Dim sPath As String

Dim SHFI As SHFILEINFO

Dim m_wCurOptIdx As Integer

Dim txtPath As String

Dim txtDisplayName As String

With BI

.hOwner = Me.hwnd

nFolder = GetFolderValue(m_wCurOptIdx)

If SHGetSpecialFolderLocation(ByVal Me.hwnd, ByVal nFolder, IDL) = NOERROR Then

.pidlRoot = IDL.mkid.cb

End If

.pszDisplayName = String$(MAX_PATH, 0)

.lpszTitle = "Browsing is limited to: "

.ulFlags = 0

End With

txtPath = ""

txtDisplayName = ""

pIdl = SHBrowseForFolder(BI)

If pIdl = 0 Then Exit Sub

sPath = String$(MAX_PATH, 0)

SHGetPathFromIDList ByVal pIdl, ByVal sPath

txtPath = Left(sPath, InStr(sPath, vbNullChar) - 1)

txtDisplayName = Left$(BI.pszDisplayName, _

InStr(BI.pszDisplayName, vbNullChar) - 1)

SHGetFileInfo ByVal pIdl, 0&, SHFI, Len(SHFI), _

SHGFI_PIDL Or SHGFI_ICON Or SHGFI_SMALLICON

SHGetFileInfo ByVal pIdl, 0&, SHFI, Len(SHFI), _

SHGFI_PIDL Or SHGFI_ICON

CoTaskMemFree pIdl

MsgBox "浣犻夋嫨鐨勬枃浠跺す鏄" + Chr(13) + Chr(10) + txtPath

End Sub

TAG: 鍑芥暟 鏂囦欢 ShellAPI 绐楀彛 娴忚
鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆