VB程式設計獲取檔案中整合的圖示
----在Win95下的應用軟體使用了打量精美的圖示,而很多圖示資源是整合在EXE、DLL檔案中的(例如Win95的回收站就使用了Shell32.dll中的圖示,31號圖示表示回收站空,32號表示回收站有被刪除檔案)在我們程式設計中,可以利用Win95的API函式ExtractIcon可以將EXE、DLL檔案中的圖示資源取出,下面通過一個VB的例子通過使用該函式將檔案中包含的圖示取出並且在一個圖片框內瀏覽。
----1、在Form1的General的Declarations中定義以下兩個函式:
PrivateDeclareFunctionExtractIconLib"shell32.dll"Alias"ExtractIconA"(ByValhInstAsLong,ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
ExtractIcon函式包含三個參量:
hInst表示當前的程式例項
lpszExeFileName表示包含圖示的資原始檔名
nIconIndex表示要取出的圖示的序號
----如果nIconIndex為-1,則函式返回包含圖示資源的檔案的圖示個數.
----從檔案中取出圖示資源前,應首先呼叫該函式獲得檔案中包含的圖示資源的個數.
----如nIconIndex為圖示資源的序號,則返回圖示控制程式碼.
PrivateDeclareFunctionDrawIconLib"user32"(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValhIconAsLong)AsLong
DrawIcon函式將圖示畫到一個圖形裝置上,
hdc為圖形裝置控制程式碼,x,y為起始位置,
hIcon為圖示控制程式碼。
----定義三個全域性變數:
DimlNumAsLong'圖示的序號
DimlCountAsLong'檔案中包含的圖示的總數
DimastrAsString'包含圖示的檔名
----2、在Form1中新增以下控制元件:
a、CommandButton,Name屬性設定為COpen
b、CommandButton,Name屬性設定為
CPrv,Enabled屬性設定為False
c、CommandButton,Name屬性設定為
CNext,Enabled屬性設定為False
d、CommonDialog,Name屬性設定為
CommonDialog1,Filter屬性設定為"可執行檔案(*.exe)|
*.exe|動態連結庫(*.dll)|*.dll|所有檔案(*.*)|*.*"
----3、全部源程式如下:
PrivateDeclareFunctionExtractIconLib"shell32.dll"Alias"ExtractIconA"(ByValhInstAsLong,ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
PrivateDeclareFunctionDrawIconLib"user32"(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValhIconAsLong)AsLong
DimlNumAsLong
DimlCountAsLong
DimastrAsString
PrivateSubCNext_Click()'瀏覽下一個圖示
lNum=lNum 1
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
CPrv.Enabled=True
IflNum=lCountThen
CNext.Enabled=False
EndIf
EndSub
PrivateSubCOpen_Click()'開啟檔案
Dimx1AsLong
Dimx2AsLong
CommonDialog1.ShowOpen
lCount=ExtractIcon(App.hInstance,CommonDialog1.filename,-1)
IflCount>0Then
astr=CommonDialog1.filename
lNum=0
Form1.Caption=astr
CPrv.Enabled=False:CNext.Enabled=True
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
Else
x1=MsgBox("FileContainnoiconresource.")
CPrv.Enabled=False:CNext.Enabled=False
EndIf
EndSub
PrivateSubCPrv_Click()'瀏覽前一個圖示
lNum=lNum-1
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
CNext.Enabled=True
IflNum=0Then
CPrv.Enabled=False
EndIf
EndSub-> 軟體開發網
----1、在Form1的General的Declarations中定義以下兩個函式:
PrivateDeclareFunctionExtractIconLib"shell32.dll"Alias"ExtractIconA"(ByValhInstAsLong,ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
ExtractIcon函式包含三個參量:
hInst表示當前的程式例項
lpszExeFileName表示包含圖示的資原始檔名
nIconIndex表示要取出的圖示的序號
----如果nIconIndex為-1,則函式返回包含圖示資源的檔案的圖示個數.
----從檔案中取出圖示資源前,應首先呼叫該函式獲得檔案中包含的圖示資源的個數.
----如nIconIndex為圖示資源的序號,則返回圖示控制程式碼.
PrivateDeclareFunctionDrawIconLib"user32"(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValhIconAsLong)AsLong
DrawIcon函式將圖示畫到一個圖形裝置上,
軟體開發網
hdc為圖形裝置控制程式碼,x,y為起始位置,
hIcon為圖示控制程式碼。
----定義三個全域性變數:
DimlNumAsLong'圖示的序號
DimlCountAsLong'檔案中包含的圖示的總數
DimastrAsString'包含圖示的檔名
----2、在Form1中新增以下控制元件:
a、CommandButton,Name屬性設定為COpen
b、CommandButton,Name屬性設定為
CPrv,Enabled屬性設定為False
c、CommandButton,Name屬性設定為
CNext,Enabled屬性設定為False
d、CommonDialog,Name屬性設定為
CommonDialog1,Filter屬性設定為"可執行檔案(*.exe)|
*.exe|動態連結庫(*.dll)|*.dll|所有檔案(*.*)|*.*"
----3、全部源程式如下:
PrivateDeclareFunctionExtractIconLib"shell32.dll"Alias"ExtractIconA"(ByValhInstAsLong,ByVallpszExeFileNameAsString,ByValnIconIndexAsLong)AsLong
PrivateDeclareFunctionDrawIconLib"user32"(ByValhdcAsLong,ByValxAsLong,ByValyAsLong,ByValhIconAsLong)AsLong
DimlNumAsLong
DimlCountAsLong
DimastrAsString
PrivateSubCNext_Click()'瀏覽下一個圖示
lNum=lNum 1
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
http://www.mscto.com
CPrv.Enabled=True
IflNum=lCountThen
CNext.Enabled=False
EndIf
EndSub
PrivateSubCOpen_Click()'開啟檔案
Dimx1AsLong
Dimx2AsLong
CommonDialog1.ShowOpen
lCount=ExtractIcon(App.hInstance,CommonDialog1.filename,-1)
IflCount>0Then
astr=CommonDialog1.filename
lNum=0
Form1.Caption=astr
CPrv.Enabled=False:CNext.Enabled=True
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
Else
x1=MsgBox("FileContainnoiconresource.")
CPrv.Enabled=False:CNext.Enabled=False
EndIf
EndSub
PrivateSubCPrv_Click()'瀏覽前一個圖示
lNum=lNum-1
x1=ExtractIcon(App.hInstance,astr,lNum)
Form1.Refresh
x2=DrawIcon(Form1.hdc,10,10,x1)
CNext.Enabled=True
IflNum=0Then
CPrv.Enabled=False
EndIf
EndSub-> 軟體開發網
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14766526/viewspace-562962/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#中通過API呼叫獲取檔案圖示C#API
- VB.Net程式設計:快速獲取資料夾/檔名稱程式程式碼程式設計
- vb向資料庫中讀取單個圖片檔案資料庫
- C語言程式設計獲取PE檔案DOS頭C語言程式設計
- C#中呼叫API獲得指定檔案的圖示C#API
- Rust 程式設計,讀取檔案Rust程式設計
- VB讀取文字檔案的例子:逐行讀取
- VB程式設計師的FTP程式設計指南1.4-下載或上傳檔案 (轉)程式設計師FTP
- VB程式設計師的FTP程式設計指南1.1-檔案傳輸協議FTP概述 (轉)程式設計師FTP協議
- Java中的獲取檔案的物理絕對路徑,和讀取檔案Java
- Delphi程式設計:用流來讀取TXT檔案中的資料程式設計
- C#中獲取Excel檔案中的表名C#Excel
- linux系統程式設計之檔案與IO(五):stat()系統呼叫獲取檔案資訊Linux程式設計
- 在Progress中獲取檔案屬性
- sql 2k中的圖片儲存和獲取----引申到檔案儲存和獲取 (轉)SQL
- Springboot 獲取jar包中的檔案Spring BootJAR
- 程式設計師如何獲取新程式設計技能程式設計師
- Excel 的VB程式設計 (轉)Excel程式設計
- WinPE中如何改變檔案顯示圖示
- Shell程式設計-檔案讀取方法集錦程式設計
- C#/VB.NET 獲取Excel中圖片所在的行、列座標位置C#Excel
- SHELL程式設計—每次讀取檔案的一行程式設計
- 程式設計師獲取程式設計靈感的 10 種方式程式設計師
- 程式設計師獲取新程式設計技能的5個技巧?程式設計師
- VB程式設計中的一些經驗 (轉)程式設計
- .net6+ 在單檔案應用程式中獲取程式集位置
- SpringBoot專案中獲取配置檔案的配置資訊Spring Boot
- VB中檔案操作的兩種方式 (轉)
- 程式設計競賽中讀檔案技能程式設計
- Java讀取本地檔案,並顯示在JSP檔案中JavaJS
- Linux 程式設計中的檔案鎖之 flockLinux程式設計
- 程式設計中快取的使用程式設計快取
- VB.NET中的物件導向程式設計特徵 (轉)物件程式設計特徵
- 獲取檔案列表 .net
- 獲取上傳檔案的大小
- C++ 獲取URL圖片、html檔案,CInternetSessionC++HTMLSession
- Maui 讀取外部檔案顯示到Blazor中UIBlazor
- SpringBoot 中獲取專案的路徑和檔案流Spring Boot