|
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
|