国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

從文件中提取圖標(biāo)

2019-11-18 17:36:21
字體:
供稿:網(wǎng)友
----Windows95和NT是被無數(shù)計算機用戶所青睞的圖形界面(GUI)操作系統(tǒng)。我們知道,許多Win95或NT下的32位應(yīng)用程序都帶有圖標(biāo)(一般來說至少有一個),此外其它一些可執(zhí)行模塊也常常是圖標(biāo)的寶庫。這些可執(zhí)行模塊包括*.EXE(可執(zhí)行文件),*.DLL(DynamicLinkLibrary,即,動態(tài)連接庫),*.CPL(控制面板模塊)等。其中,不少圖標(biāo)做得非常精致、漂亮,特別惹人喜歡。當(dāng)然,其中大部分的圖標(biāo)你可能無法直接看到。因此,不少人也許希望能有一種工具可以把這些精彩的圖標(biāo)從那些文件中"取"出來。筆者就有過這種想法。后來,筆者自己動手寫了一個程序,使用它,我現(xiàn)在可以隨心所欲地從任何包含圖標(biāo)資源的文件中提取任何我所喜愛的圖標(biāo),更不用說輕松地瀏覽文件中的所有圖標(biāo)了。

----大家知道,包含在可執(zhí)行模塊中的圖標(biāo)資源是以二進制數(shù)據(jù)(或稱,資源)的形式存儲的,因而,我們應(yīng)該把這些二進制數(shù)據(jù)轉(zhuǎn)換成圖標(biāo)文件的格式,然后再存為圖標(biāo)文件(*.ICO)。因為有了In
----(3)從Standard頁上選取一個TLabel

----(4)從Additional頁上選取一個TImage

----(5)從Dialogs頁上選取一個TOpenDialog,并把它的Options屬性的ofNoReadOnlyReturn子屬性改為False。

----(6)將Form1的Font改成System
//Button1和Button2的Tag分別是1和-1
begin
ifTotal=0ThenExit;
No:=No (SenderasTButton).tag;
ifNo>TotalthenNo:=0;
ifNo<0thenNo:=Total;
Image1.Picture.Icon:=nil;
Image1.Picture.Icon.Handle:
=ExtractIcon(hInstance,PChar(ModuleName),No);
Label1.Caption:='No.' IntToStr(No) 'icon';
//Label1用于指示當(dāng)前圖標(biāo)在原文件中的序號
end;

procedureTForm1.FormCreate(Sender:TObject);
begin
Path:=ExtractFilePath(
application.ExeName);
//下面的代碼使程序有處理命令行參數(shù)的能力
ifParamCount>0
Thenbegin
ModuleName:=ParamStr(1);
Total:=ExtractIcon(hInstance,PChar(ModuleName),-1);
Form1.caption:=IntToStr(Total)
'icon(s)foundin' ParamStr(1);
end;
end;

procedureTForm1.Button3Click(Sender:TObject);
//這段代碼保存當(dāng)前圖標(biāo)
begin
IfTotal=0ThenExit;
Image1.Picture.Icon.SaveToFile
(Path '/Icon' IntToStr(No) '.ico');
{把圖標(biāo)文件與該程序存于
同一目錄,文件名為"Icon"加序號的形式}
end;

procedureTForm1.N2Click(Sender:TObject);
//這段代碼從菜單中選擇一個文件
begin
IfOpenDialog1.Execute
thenbegin
ModuleName:=OpenDialog1.FileName;
Total:=ExtractIcon(hInstance,PChar(ModuleName),-1);
No:=0;Label1.Caption:='';
Form1.Caption:=IntToStr(Total) 'icon(s)foundin' ModuleName;
end;
end;
end.

(調(diào)試環(huán)境:Delphi4.0,Windows95,WindowsNT4)

----說明:API函數(shù)ExtractIcon是在ShellAPI單元中聲明的,所以你必須在Uses語句中加入此單元才能使用該函數(shù)。它在Delphi中的原型聲明如下:

----functionExtractIcon(hInst:HINST;lpszExeFileName:PChar;nIconIndex:UINT):HICON;stdcall;

----參數(shù)說明:

----hInst:為調(diào)用該函數(shù)的實例句柄;

----lpszExeFileName:指明從哪個文件提取圖標(biāo)(不一定非得是EXE文件);

----nIconIndex:該參數(shù)為負(fù)1時,函數(shù)返回指定文件中包含的圖標(biāo)個數(shù);否則,返回序號為nIconIndex的圖標(biāo)(如果存在的話)的句柄。在文件中圖標(biāo)的序號是從0開始的。

----如果函數(shù)調(diào)用失敗則返回0.->


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东山县| 怀柔区| 昆明市| 广汉市| 剑河县| 天门市| 高陵县| 海盐县| 土默特左旗| 晋州市| 中卫市| 宜兰县| 乾安县| 苏尼特右旗| 子洲县| 淳化县| 新津县| 开远市| 荣成市| 湛江市| 广昌县| 连州市| 辽阳市| 三门峡市| 肥东县| 准格尔旗| 静海县| 南昌市| 阿合奇县| 徐州市| 乳山市| 云和县| 乌拉特后旗| 开封县| 会同县| 诸城市| 阜平县| 象州县| 历史| 长春市| 铁岭市|