CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

怎样提取一个Exe文件的字符串资源?

楼主xthmpro_cn([可人])2005-03-13 21:29:34 在 Delphi / Windows SDK/API 提问

我用下面的方法提取不到,只完成了一半的功能,请大家指点一下:  
  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

相关问题

  • 提取字符串
  • 提取字符串
  • ========== JSP 如何提取Htlm文件中的字符串 ===============
  • 字符串提取问题
  • 怎样提取字符串?
  • 怎样提取字符串?
  • 提取字符串问题?
  • 字符串和文件
  • 请教关于路径+文件名字符串的提取文件名的算法。
  • 如何提取字符串指针中的字符串?

关键词

  • hglob
  • hresource
  • hmodule
  • enumresname
  • lpname
  • valuelisteditor
  • lptype
  • resstring
  • inttostr
  • longint

得分解答快速导航

  • 帖主:xthmpro_cn
  • caiso
  • zswang
  • zswang

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo