CSDN=>FAQ=>FAQ 展示
  • 问题内容:用API枚举字符串资源
  • 原讨论链接:http://community.csdn.net/expert/topicview1.asp?id=5068821
  • 所属论坛:界面     审核组:VC/MFC
  • 提问者:AgedBOY     解决者:pomelowu
  • 感谢:pomelowu zhucde BOYGUARD110
  • 关键字:VC/MFC 函数 API 指针 资源 界面 string 字符 http 枚举 送来
  • 答案:

    用API枚举字符串资源

    请各位高手帮忙:

    我想枚举PE文件里的String Table的一个个String。只要枚举出ID即可。

    我用EnumResourceName来做如下枚举:
    EnumResourceNames(hMyDll, RT_STRING, EnumStrResFunc, (LONG_PTR)&UserData);

    结果用一个有十来个字符串的DLL来试验,枚举回调函数才被调了4次?!而且每次送来的lpszName的值根本就不能用!

    MSDN上说lpszName的值,不是字符串形式的资源名,就是直接的ID值。可回调函数送来的值好像什么也不是!我不知道该怎样利用这个值。

    我试着用 FindResource -> LoadResource -> LockResource 从回调函数送来的lpszType和lpszName获得一个void*指针,结果查看指针地址,发现里面只有一些乱七八糟的字符串,不是我想要的。

    请问该如何用Win32 API来枚举(搜索)一个DLL或exe里面的所有字符串资源?就好像资源修改器所做的那样。

    难道要用 for(i = 1~65535) LoadString(i)吗?这样会很慢吧?!
    ---------------------------------------------------------------

    参考MSDN例程
    找到
    hResInfo = FindResourceEx(hModule, lpType, lpName, wLang);
    这个语句,在后面加上
    HGLOBAL hg = LoadResource(hModule, hResInfo);
    LPVOID lp = LockResource(hg);
    你看看lp指向的地址里边写的是什么。:)

    例程
    http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/resources/introductiontoresources/usingresources.asp?frame=true#_win32_Creating_a_Resource_List
    ---------------------------------------------------------------

    msdn上说,【String resources are stored in sections of up to 16 strings per section. The strings in each section are stored as a sequence of counted (not null-terminated) Unicode strings.】,EnumNamesFunc里边的lpName要么是一个字符指针,以#开头,后面是section序号,要么是一个最高位为0的整形数据(强制转换一下为ULONG),也是这个Section序号。

    ---------------------------------------------------------------

    mark

                        // 
                        // Stablupd.exe Manipulate String Resources in an Executable
                        // Article ID : 196774  
                        //
                        http://support.microsoft.com/kb/q196774/



                        //          
                        // The format of string resources
                        // 
                        http://blogs.msdn.com/oldnewthing/archive/2004/01/30/65013.aspx

  • 评价: 有价值 给朵鲜花(20) 无价值 扔个鸡蛋(8)
相关FAQ
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo