アプリケーション用の[バージョン情報]ダイアログボックスを作成しています。Delphiの[バージョン情報]ダイアログボックスにあるものと似ています。.BPL
ロードされたすべてのDLLではなく、ランタイムパッケージ(ファイル)のバージョン情報のみを表示したいのですが。RTL
ロードされたパッケージのリストを取得するための関数が含まれていますか、それとも関数を使用してEnumProcessModules
結果をフィルタリングする必要がありますか?
前もって感謝します...
アプリケーション用の[バージョン情報]ダイアログボックスを作成しています。Delphiの[バージョン情報]ダイアログボックスにあるものと似ています。.BPL
ロードされたすべてのDLLではなく、ランタイムパッケージ(ファイル)のバージョン情報のみを表示したいのですが。RTL
ロードされたパッケージのリストを取得するための関数が含まれていますか、それとも関数を使用してEnumProcessModules
結果をフィルタリングする必要がありますか?
前もって感謝します...
からEnumModules関数を使用できますSystem
。
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.