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); 

    }

     

  • 相关阅读:
    ddos(分布式拒绝服务)攻击防御措施
    arp_announce和arp_ignore 详细解说
    TCP三次握手和四次挥手
    ARP请求详解
    LVS/DR模式原理剖析(FAQs)
    nfs配置 /etc/exports
    LVS集群之十种调度算法及负载均衡-理论
    SSH 故障排查思路
    shell脚本基础和编写规范
    计算机操作系统概述
  • 原文地址:https://www.cnblogs.com/aicro/p/1650034.html
Copyright © 2011-2022 走看看