程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> Delphi實現提取可執行文件內部所有圖標

Delphi實現提取可執行文件內部所有圖標

編輯:更多關於編程

      本實例實現的功能是能夠從用戶選擇的可執行文件(後綴名為exe)中提取所有圖標並且顯示在窗體上。

      在窗體中添加TImage 組件、TOpenDialog組件和TButton組件,TImage組件充當顯示文件內圖標的容器,TOpenDialog組件和TButton組件用來激活提示用戶選擇GIF動畫的對話框。添加組件後的窗體如圖1所示。

    Delphi實現提取可執行文件內部所有圖標    三聯

      圖1 添加組件後的窗體

      首先在窗體的uses段中添加ShellAPI,然後添加按鈕響應代碼如下:

      procedure TfrmMain.btnOpenClick(Sender: TObject);

      var

      i: Integer;

      Large, Small: HICON;

      nIcons: Integer;

      begin

      if OpenDialog1.Execute then

      begin

      self.Image1.Canvas.Refresh;

      nIcons:=ExtractIconEx(PChar(OpenDialog1.FileName), -1, Large, Small, 1);

      for i:=0 to nIcons-1 do

      begin

      ExtractIconEx(PChar(self.OpenDialog1.FileName), i, Large, Small, 1);

      DrawIcon(self.Image1.Canvas.Handle,(i div 4)*40,(i mod 4)*40,Large);

      end;

      end;

      end;

      當用戶在程序運行過程中選擇一個可執行文件後,程序首先通過self.Image1.Canvas. Refresh語句清除TImage組件上的顯示內容,然後通過將ExtractIconEx函數的第2個參數指定為-1來取得可執行文件中圖標的數目。得到數目後,通過一個循環中的ExtractIconEx (PChar(self.OpenDialog1.FileName), i, Large, Small, 1)語句把可執行文件中的大、小圖標分別存儲在Large和Small變量中。最後通過DrawIcon函數在TImage組件上繪制圖標。

      程序代碼如下:

      unit Unit1;

      interface

      uses

      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

      Dialogs, StdCtrls, ShellAPI, Grids, ExtCtrls;

      type

      TfrmMain = class(TForm)

      btnOpen: TButton;

      OpenDialog1: TOpenDialog;

      Image1: TImage;

      procedure btnOpenClick(Sender: TObject);

      private

      { Private declarations }

      public

      { Public declarations }

      end;

      var

      frmMain: TfrmMain;

      implementation

      {$R *.dfm}

      procedure TfrmMain.btnOpenClick(Sender: TObject);

      var

      i: Integer;

      Large, Small: HICON;

      nIcons: Integer;

      begin

      if OpenDialog1.Execute then

      begin

      self.Image1.Canvas.Refresh;

      nIcons:=ExtractIconEx(PChar(OpenDialog1.FileName), -1, Large, Small, 1);

      for i:=0 to nIcons-1 do

      begin

      ExtractIconEx(PChar(self.OpenDialog1.FileName), i, Large, Small, 1);

      DrawIcon(self.Image1.Canvas.Handle,(i div 4)*40,(i mod 4)*40,Large);

      end;

      end;

      end;

      end.

      保存文件,然後按F9鍵運行程序,程序運行的初始畫面如圖2所示。

      單擊“打開”按鈕,彈出一個提示用戶選擇可執行文件的對話框。確認後,在窗體的TImge組件上顯示所選擇的可執行文件中存儲的圖標,如圖3所示。

      圖2 程序運行的初始畫面

      圖3 程序運行結果

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved