zoukankan      html  css  js  c++  java
  • 如何手工导入普通二进制资源,并且写入文件

    以一个已经成型的a.exe文件为例,载入到b.exe. 利用这种方法可以制作简易的安装程序。

    这种方法也可以使用于图标等任何需要文档化的资源。

    基本思路是先导入为资源,然后在运行程序的时候写进文件。

    首先要在resources.h里加入 #define ID_EXE1 128

    然后在RC文件里写上

    IDR_EXE1                EXE                     "a.exe"

    其中a.exe是需要载入的资源,它的基地址是rc文件所在地址。

    当然,着整个过程可以通过vs自动实现

     

    在编写程序的时候,应该以资源的形式进行写入文件,代码如下

    代码
    //其中filename是目标文件全路径名
    void WriteResourceToFile(WCHAR const *filename) 

            
        HINSTANCE hInstance
    =GetModuleHandle(NULL); 

        
    //加载资源
        HRSRC hResInfo = FindResource(hInstance,MAKEINTRESOURCE(IDR_EXE1),TEXT("EXE")); 
            
    //注意这里的参数,是与RC文件中的相吻合的。

        HGLOBAL hgRes 
    = LoadResource(hInstance, hResInfo); 

        
    void *pvRes = LockResource(hgRes); 

        DWORD cbRes 
    = SizeofResource(hInstance, hResInfo); 

        
    //打开文件
        HANDLE hFile = 
            CreateFile(filename, GENERIC_WRITE, 
    0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, 0); 

        DWORD cbWritten; 

        
    //填入文件
        WriteFile(hFile, pvRes, cbRes, &cbWritten, 0); 
            
            
              CloseHandle(hFile); 

    }

     

  • 相关阅读:
    管线命令
    CentOS7搭建本地YUM仓库,并定期同步阿里云源
    linux日志分割脚本
    Centos 7 命令整理
    python实现变脸动画测试
    python打印杨辉三角
    python打印乘法口诀,敏感字替换
    python食人蛇代码
    用python写的考勤自动打卡程序
    tomcat发版脚本
  • 原文地址:https://www.cnblogs.com/aicro/p/1650034.html
Copyright © 2011-2022 走看看