VBA獲取文件的圖標(biāo)并顯示在窗體或按鈕上的源碼
- 2019-07-07 09:38:00
- zstmtony 轉(zhuǎn)貼
- 4283
'模塊中的代碼 Option Explicit Public Const SHGFI_DISPLAYNAME = &H200 Public Const SHGFI_EXETYPE = &H2000 Public Const SHGFI_LARGEICON = &H0 Public Const SHGFI_SHELLICONSIZE = &H4 Public Const SHGFI_SMALLICON = &H1 Public Const SHGFI_SYSICONINDEX = &H4000 Public Const SHGFI_TYPENAME = &H400 Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE Public Const MAX_PATH = 260 Public Const ILD_TRANSPARENT = &H1 Public Type SHFILEINFO hIcon As Long iIcon As Long dwAttributes As Long szDisplayName As String * MAX_PATH szTypeName As String * 80 End Type Public Declare Function SHGetFileInfo Lib _ "shell32.dll" Alias "SHGetFileInfoA" _ (ByVal pszPath As String, _ ByVal dwFileAttributes As Long, _ psfi As SHFILEINFO, _ ByVal cbSizeFileInfo As Long, _ ByVal uFlags As Long) As Long Public Declare Function ImageList_Draw Lib "comctl32.dll" _ (ByVal himl As Long, ByVal i As Long, _ ByVal hDCDest As Long, ByVal x As Long, _ ByVal y As Long, ByVal flags As Long) As Long Public shinfo As SHFILEINFO Public Const SHGFI_USEFILEATTRIBUTES = &H10 Public Const SHGFI_ICON = &H100 '=================================================== '新建一個(gè)窗體,在窗體上添加一個(gè)TextBox用來(lái)輸入文件路徑 '和兩個(gè)picturebox用來(lái)顯示提取到的圖標(biāo) '以下是窗體中的代碼 Private Sub Text1_Change() '要顯示的圖標(biāo)路徑 Dim hImgSmall As Long Dim fName As String '驅(qū)動(dòng)器號(hào)、文件夾名、文件名 Dim r As Long Dim hImgLarge As Long Dim Info1 As String, Info2 As String fName = Text1.Text hImgSmall& = SHGetFileInfo(fName$, 0&, shinfo, Len(shinfo), SHGFI_ICON Or SHGFI_SMALLICON Or SHGFI_SYSICONINDEX Or SHGFI_USEFILEATTRIBUTES) hImgLarge& = SHGetFileInfo(fName$, 0&, shinfo, Len(shinfo), SHGFI_ICON Or BASIC_SHGFI_FLAGS Or SHGFI_SYSICONINDEX Or SHGFI_USEFILEATTRIBUTES) Info1 = Left$(shinfo.szDisplayName, InStr(shinfo.szDisplayName, Chr$(0)) - 1) Info2 = Left$(shinfo.szTypeName, InStr(shinfo.szTypeName, Chr$(0)) - 1) Debug.Print Info1; Info2 Picture1.Picture = LoadPicture() Picture1.AutoRedraw = True Picture2.Picture = LoadPicture() Picture2.AutoRedraw = True r = ImageList_Draw(hImgSmall&, shinfo.iIcon, Picture1.hDC, 0, 0, ILD_TRANSPARENT) r = ImageList_Draw(hImgLarge&, shinfo.iIcon, Picture2.hDC, 3, 3, ILD_TRANSPARENT) Set Picture1.Picture = Picture1.Image Set Picture2.Picture = Picture2.Image End Sub 有了上面的代碼,你在Text1中輸入一個(gè)文件路徑就可以看到圖標(biāo)了,但我還要給你說(shuō)的是,你直接輸快捷方式的路徑是不對(duì)的,你要先獲得快捷方式所指向的文件路徑,然后顯示這個(gè)文件路徑的圖標(biāo)才是正確的,挺簡(jiǎn)單的。 還有什么不懂的,你可以來(lái)找我! 暈~ 獲得快捷方式的信息更簡(jiǎn)單,看下面: Option Explicit '注意要引用:Microsoft Shell Controls And Automation Private Sub Command1_Click() Dim FolderPath As String Dim ShortcutName As String Dim WorkDir As String Dim Arguments As String, Description As String Dim IconIdx As Long, ShowCommand As Long FolderPath = "C:\Documents and Settings\Administrator\桌面" '快捷方式所在的目錄 ShortcutName = "ToolBox.exe.lnk" '快捷方式的文件名,注意要加lnk Dim IconFile As String Call GetShellLinkInfo(FolderPath, ShortcutName, WorkDir, Arguments, Description, IconFile, IconIdx, ShowCommand) End Sub Private Sub GetShellLinkInfo(ByVal FolderPath As String, ByVal ShortcutName As String, WorkDir As String, _ Arguments As String, Description As String, IconFile As String, IconIdx As Long, _ ShowCommand As Long) Dim mShell As Shell, mFile As FolderItem, mFolder As Folder Dim lnk As ShellLinkObject, i As Long Set mShell = New Shell Set mFolder = mShell.NameSpace(FolderPath) On Error Resume Next Set mFile = mFolder.Items.Item(ShortcutName) If Err Then MsgBox ShortcutName & " is inaccessable!" Err.Clear GoTo exit_sub Else If mFile.IsLink Then Set lnk = mFile.GetLink WorkDir = lnk.WorkingDirectory Arguments = lnk.Arguments Description = lnk.Description IconIdx = lnk.GetIconLocation(IconFile) ShowCommand = lnk.ShowCommand MsgBox "Name: " & mFile.Name & vbCrLf & _ "Description: " & lnk.Description & vbCrLf & _ "Path: " & lnk.Path & vbCrLf & _ "WorkingDirectory: " & lnk.WorkingDirectory & vbCrLf, vbInformation Else MsgBox ShortcutName & " is not a shortcut!", vbInformation End If End If exit_sub: Set lnk = Nothing Set mFile = Nothing Set mFolder = Nothing Set mShell = Nothing End Sub
分享
Access數(shù)據(jù)庫(kù)自身
- office課程播放地址及課程明細(xì)
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平臺(tái)
- 將( .accdb) 文件格式數(shù)據(jù)庫(kù)轉(zhuǎn)換為早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫(kù)文件格式(.mdb)轉(zhuǎn)換為 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫(kù)引擎和訪問(wèn)連接引擎以阻止對(duì)遠(yuǎn)程數(shù)據(jù)庫(kù)的訪問(wèn)(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫(kù)中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動(dòng)宏時(shí))
- Access Runtime(運(yùn)行時(shí))最全的下載(2007 2010 2013 2016 2019 Access 365)
Access VBA函數(shù)模塊
- access vba代碼太長(zhǎng),換行,分行的寫法
- VB6 VBA Access真正可用并且完美支持中英文的 URLEncode 與 URLDecode 函數(shù)源碼
- 自定義VB中的urlencode函數(shù),將URL中特殊部分進(jìn)行編碼
- Access 函數(shù)簡(jiǎn)化串接sql字符串,減少符號(hào)導(dǎo)致的書寫錯(cuò)誤
- vba完全關(guān)閉IE瀏覽器及調(diào)用IE瀏覽器的簡(jiǎn)單應(yīng)用
- 利用FollowHyperlink方法打開(kāi)超鏈接提示“無(wú)法下載您要求的信息”的解決方案
- 在access中用代碼打開(kāi)文本框中超鏈接地址
Access Activex第三方控件
- Activex控件或Dll 在某些電腦無(wú)法正常注冊(cè)的解決辦法(regsvr32注冊(cè)時(shí)卡?。?/a>
- office使用部分控件時(shí)提示“您沒(méi)有使用該ActiveX控件許可的問(wèn)題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹(shù)控件(treeview) 64位Office下出現(xiàn)橫向滾動(dòng)條不會(huì)自動(dòng)定位的解決辦法
- Access中國(guó)樹(shù)控件 在win10電腦 節(jié)點(diǎn)行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹(shù)控件 ListView列表等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)并解析返回的XML
Access ADP Sql Server等
- 早期PB程序連接Sqlserver出現(xiàn)錯(cuò)誤
- MMC 不能打開(kāi)文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一個(gè)MMC控制臺(tái),或者用后來(lái)的MMC版
- sql server連接不了的解決辦法
- localhost與127.0.0.1區(qū)別
- Roych的淺談數(shù)據(jù)庫(kù)開(kāi)發(fā)系列(Sql Server)
- sqlserver 自動(dòng)備份對(duì)備份目錄沒(méi)有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
Access 行業(yè)應(yīng)用開(kāi)發(fā)
- 金蝶KIS旗艦版 登錄時(shí)“類型不匹配”
- access行業(yè)交流QQ群-部分行業(yè)交流群(倉(cāng)庫(kù) 人事 工資 考勤 CRM HRM MRP ERP 等)
- access垃圾分類數(shù)據(jù)庫(kù)
- Office提高企業(yè)辦公管理效率
- Access交流網(wǎng)Acccess通用開(kāi)發(fā)平臺(tái)樹(shù)導(dǎo)航出錯(cuò)的解決辦法
- Access交流網(wǎng)Access通用開(kāi)發(fā)平臺(tái)的使用幫助教程及FAQ
- Access采購(gòu)倉(cāng)庫(kù)系統(tǒng)作品源代碼
文章分類
聯(lián)系我們
聯(lián)系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |