2013-02-11 13 views
5

मैं अपने अनुप्रयोगों के लिए "संस्करण जानकारी" संवाद बॉक्स बना रहा हूं; डेल्फी के समान कुछ "इसके बारे में" संवाद बॉक्स में है। मैं केवल रन टाइम पैकेज (.BPL फाइलों) के लिए संस्करण जानकारी प्रदर्शित करना चाहता हूं, और सभी लोड डीएलएल नहीं। क्या RTL में लोड किए गए पैकेज की सूची प्राप्त करने के लिए फ़ंक्शंस शामिल हैं, या मुझे EnumProcessModules फ़ंक्शन का उपयोग करना होगा और परिणाम फ़िल्टर करना होगा?लोड किए गए रन टाइम पैकेज की सूची कैसे प्राप्त करें?

अग्रिम धन्यवाद ...

उत्तर

7

आप System से EnumModules फ़ंक्शन का उपयोग कर सकते हैं।

EnumModules फ़ंक्शन का उपयोग करने के तरीके का एक बहुत ही सरल प्रदर्शन है और सभी लोड किए गए BPL's के नाम प्राप्त करें। यह एक कंसोल एप्लीकेशन है, लेकिन कोड को आसानी से उत्पादन अनुप्रयोग में पुन: उपयोग किया जा सकता है।

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. 
: आप इसे बाहर का परीक्षण करना चाहते हैं, तो आप संकुल का उपयोग कर रहे यह सुनिश्चित कर लें
संबंधित मुद्दे