怎么读取dll文件中的资源

来源:互联网 发布:小企业记账软件 编辑:程序博客网 时间:2024/04/30 05:29

关键字: dll    资源   字符串资源


下面建立一个简单的dll为例,dll实现建立一个文件,并将读到的String Table资源写到此文件中。
步骤如下:
1)在VC菜单中File->New新建一个命名为dlltest的Win32 Dynamic-Link Library工程,下一步选择
  A simple DLL project。

2)在dlltest.cpp文件中添加代码:
 #include "stdafx.h"
 #include "stdio.h"
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
 {
      switch(fwdreason)
      {
           case DLL_PROCESS_ATTACH:
                    int i;
                    FILE *fw;
                    fw = fopen(filename, "w");
                    char str[200];
                    LoadString(hinstDLL,1,filename,MAX_PATH);   
                    fprintf(fw,"%s/n", filename);  
                break;
           default:
                break;
       }
       return(TRUE);
 }

3)在VC菜单中Insert->Resource添加一个String Table,其ID为IDS_STRING1,Caption为abc,点击保
  存,文件名为Script1.rc。

4)在Header Files中添加进resource.h; Resource Files中添加进Script1.rc。

5)在dlltest.cpp中添加头文件resource.h。

6)编译完成文件。


一个最简单的调用例子:

#include <stdio.h>
#include <windows.h>
int main(int argc, char *argv[])
{
 
 HINSTANCE hDll;
 hDll = LoadLibrary("dlltest.dll"); //加上路径
 return 0
}

可看到在修改IDS_STRING1的caption时,可读到不同的字符串。  

 

类似地,可读取其他资源:

函数为:

  HBITMAP LoadBitmap(HINSTANCE hInstance,LPCTSTR lpBitmapName)
  HICON LoadIcon(HINSTANCE hInstance,LPCTSTR lpIconName)
  HMENU LoadMenu(HINSTANCE hInstance,LPCTSTR lpMenuName)
  int LoadString(HINSTANCE hInstance,UINT uID,LPTSTR lpBuffer,int BufferMax)