2013-02-11 19 views
5

Uygulamalarım için bir "Sürüm Bilgisi" iletişim kutusu oluşturuyorum; "Hakkında" iletişim kutusundaki bir Delphi'ye benzer bir şey var. Sürüm bilgilerini yalnızca çalışma zamanı paketleri (.BPL dosyaları) ve yüklü tüm DLL'leri değil görüntülemek istiyorum. RTL yüklü paketlerin bir listesini almak için işlevler içeriyor mu, yoksa EnumProcessModules işlevini kullanmalı ve sonucu filtrelemeli miyim? peşinYüklenen çalışma süresi paketlerinin listesi nasıl alınır?

Teşekkür ...

cevap

7

Sen System den EnumModules işlevini kullanabilirsiniz.

EnumModules işlevinin nasıl kullanılacağına ilişkin çok basit bir tanıtım ve yüklenen tüm BPL's adlarını al. Bu bir konsol uygulamasıdır, ancak kod bir üretim uygulamasında kolayca yeniden kullanılabilir. Test etmek isterseniz, paketleri kullandığınızdan emin olun:

program Project17; 

{$APPTYPE CONSOLE} 

uses 
    SysUtils, Classes, Windows; 

function EnumModulesFunc(HInstance: Integer; Data: Pointer): Boolean; 
var Buff:array[0..1023] of char; 
begin 
    if GetModuleFileName(HInstance, @Buff, SizeOf(Buff)) = ERROR_INSUFFICIENT_BUFFER then 
    Buff[High(Buff)] := #0; 
    TStringList(Data).Add(Buff); 
end; 

var L: TStringList; 

begin 
    try 
    L := TStringList.Create; 
    try 
     System.EnumModules(EnumModulesFunc, L); 
     WriteLn(L.Text); 
    finally L.Free; 
    end; 
    Readln; 
    except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
    end; 
end. 
İlgili konular