怎样提取一个Exe文件的字符串资源?
我用下面的方法提取不到,只完成了一半的功能,请大家指点一下:
Function EnumResName(hModule: HMODULE; lpType, lpName: PChar;lParam: Longint):BOOL;stdcall;
procedure TForm1.btn1Click(Sender: TObject);
begin
EnumResourceNames(0, RT_STRING, @EnumResName, 0);
end;
Function EnumResName(hModule: HMODULE; lpType, lpName: PChar; lParam: Longint):BOOL; //回var
ResString: String;
hResource: HRSRC;
hglob: HGLOBAL;
Buffer: array [0..1023] of char;
Begin
result := True;
if lpType <> RT_STRING then exit;
//
hResource:=FindResource(hModule, lpName, RT_STRING);
//
hglob:=LoadResource(hModule, hResource);
SetString(ResString, Buffer,
LoadString(FindResourceHInstance(hModule), hglob, Buffer, SizeOf(Buffer)));
Form1.ValueListEditor1.Strings.Add(Format('%s=%s', [IntToStr(Integer(lpName)), ResString]))
//Form1.ValueListEditor1.Strings.Add(Format('%s=%s', [IntToStr(Integer(lpName)), IntToStr(Integer(hResource))]))
end;
问题点数:50、回复次数:8Top
1 楼caiso(十年磨一剑)回复于 2005-03-13 21:45:15 得分 10
顶一下Top
2 楼zswang(伴水清清)(专家门诊清洁工)回复于 2005-03-13 22:09:37 得分 10
建议你看看这个Demo
C:\Program Files\Borland\Delphi6\Demos\ResXplorTop
3 楼zswang(伴水清清)(专家门诊清洁工)回复于 2005-03-13 22:33:44 得分 30
//参考如下代码
function EnumResName(
hModule: HMODULE;
lpszType: LPCTSTR;
lpszName: LPTSTR;
lParam: Longint
): BOOL; stdcall;
var
hResource: HRSRC;
hglob: HGLOBAL;
vPointer: PWideChar;
Begin
Result := True;
hResource := FindResource(hModule, lpszName, RT_STRING);
hglob := LoadResource(hModule, hResource);
try
vPointer := LockResource(hglob);
TForm1(lParam).ValueListEditor1.InsertRow(IntToStr(Integer(lpszName)),
vPointer, True);
finally
UnlockResource(hglob);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumResourceNames(HInstance, RT_STRING, @EnumResName, Integer(Self));
end;Top
4 楼xthmpro_cn([可人])回复于 2005-03-14 08:40:36 得分 0
的确是可以,但是无法取出具体资源的ID,这里得到的lpszName是String Table 的所有字符串。我需要每个字符串的具体ID,谢谢。
我努力看看这个Demo
C:\Program Files\Borland\Delphi6\Demos\ResXplor
Top
5 楼caiso(十年磨一剑)回复于 2005-03-14 09:41:13 得分 0
顶一下Top
6 楼xthmpro_cn([可人])回复于 2005-03-14 12:56:34 得分 0
请多看一眼!Top
7 楼zswang(伴水清清)(专家门诊清洁工)回复于 2005-03-17 08:51:54 得分 0
如果被AsPack压缩,找个解压缩的不就结了Top
8 楼xthmpro_cn([可人])回复于 2005-03-20 21:38:30 得分 0
可以了,但是没有找解压的,我们的要求不同!谢谢各位!Top




