お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"バージョン情報リソース名の列挙"






  フォームにTMemoを配置して、

----------<ここから>----------

const
  WM_USER_ENUM_RESOURCE_NAMES = WM_USER + 522;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
    procedure WMUserEnumResourceNames(
    var fM: TMessage
    ); message WM_USER_ENUM_RESOURCE_NAMES;
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
function EnumResNameProc(
  hModule:  THandle;
  lpszType: PChar;
  lpszName: PChar;
  lParam:   LongInt
): BOOL; stdcall;
begin
  SendMessage(
    lParam,
    WM_USER_ENUM_RESOURCE_NAMES,
    0,
    Windows.LPARAM(lpszName)
  );

  Result := True;
end;

begin
  if not EnumResourceNames(
    0, // 0: このプロセスを作成するのに使われたモジュール
       // HInstance: このプログラム モジュール
       // LoadLibrary(モジュール名): 指定されたモジュール
    RT_VERSION,
    @EnumResNameProc,
    LongInt(Handle)
  ) then begin
    ShowMessage(
         'EnumResourceNames: '
    + SysErrorMessage(GetLastError())
    );

    Exit;
  end;
end;

procedure TForm1.WMUserEnumResourceNames(
var fM: TMessage
);
var
  S: string;

begin
  if (fM.lParam > High(WORD)) then begin
    S   := PChar(fM.lParam);
  end
  else begin
    S   := '#'+IntToStr(fM.lParam);
  end;
  Memo1.Lines.Add('Resource Name: '+S);
end;

----------<ここまで>----------

とすると、バージョン リソースがあれば Memo1 に 'Resource Name: #1' のよ
うに表示されます。たいたい同じようにして、リソースの種類
(EnumResourceTypes)やリソースの言語(EnumResourceLanguage)も列挙できるよ
うです。

アイクビー

Original document by アイクビー      氏 ID:(KHB01350)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum