有几个问题想不通,请大家帮一下:
在VB程序中如何遍历资源文件中所有的资源,并获取ID号及资源的类型。

解决方案 »

  1.   

    可以的。
    一种是操作本身中导入的资源,这种比较简单。LoadResources,等函数就可以处理。另一种就是,操作其它EXE ,DLL,等文件中的资源。。这就要用到 API  OpenResources,BeginResources,等相关的操作资源的API
      

  2.   

    调用资源的前提是,用户并不知道资源有哪些种类,更不知道资源的ID号,所有这些都需要程序来显示给用户选择。在制作控件时可以给用户一个友好的界面,而loadresource使用的前提是用户必须事先知道ID号,openresources等API函数也需要运行在编译后的环境中,都无法实现这一目的。
    还有更好的答案吗?
      

  3.   

    资源是可以枚举的,但要编译成exe或dll的pe格式文件。
    如果如楼主所说从资源文件中枚举也是可以的,否则就没有资源编辑器了,没研究过不敢妄加评论。
      

  4.   

    1.如果是对PE文件,则有API函数,LoadLibrary(或GetModuleHandle或EnumModules) + EnumResourceTypes + EnumResourceNames(注意的是,需要判断某些ResourceName可能是Integer的ID,也可能是String的Name)2.对于res文件,参考:Resource File Formats
      

  5.   

    如果是主程序自身带的资源,则ModuleHandle使用App.hInstance 
      

  6.   

    unsigned:
    不好意思,我的意思是在VB的编程环境下使用,即使用的是用户自定义的资源文件(.res),从exe或dll文件中如何取得资源网上有很多介绍,但不是我想要的,MSDN中也只介绍了loadrespicture等三个函数,并没有取res文件中资源ID号的函数,您有方法解决吗?还请帮帮忙,先谢了。
      

  7.   

    苦等几日,苦查多日仍无结果,懊恼……
    有没有知道如何通过调取.res二进制方法,二进制文件操作从来没有接触过,有没有人能帮我看看如何取.res特定字节处的数据,以及如何取二进制文件中的结构类型数据。附:
    资源文件格式 
    本节描述二进制资源文件格式,它由资源编辑器基于资源宣言文件的目录创建,通常具有.res扩展名。连接器重定格式.res文件到一个资源目标文件,并连接它到一个应用程序的可执行文件。
    一个二进制资源文件由许多连接资源入口组成。每个入口由一个资源句柄和资源数据组成。一个资源句柄是文件的一个双字节序列,包含下列组成部分:
    • 一个双字节(dword),它包含资源句柄的大小
    • 一个双字节,它包含资源数据的大小
    • 资源类型
    • 资源名称
    • 资源补充信息
    RESOURCEHEADER 结构描述句柄信息,资源数据紧随资源句柄之后,指定资源的每个类型。某些资源也使用一个资源特征组句柄结构提供关于资源组的信息。
    英语很弊脚,可能有误。