我这里使用VC6来演示是因为最近我用VC6比较多,其实用新版的visual studio 2019做法是类似的。

本文参考了这篇博客,他介绍得比较详细,大家有兴趣可以去看看
https://blog.csdn.net/chaoguodong/article/details/39666653

首先,想要在文件中嵌入数据,最暴力的做法是将文件通过xxd工具转换成字符数组,写入到源码中。我之前写了一篇博客介绍这种做法:
用数组存储二进制数据

这种做法简单粗暴,缺点是编译时间比较长,代码也比较长(莫名其妙就几十万行代码了)。不推荐这种做法,更好的做法是使用自定义资源。

要在VC6中使用资源,首先要新建一个资源脚本

然后在资源视图中新建一种资源,我这里命名为binary


创建了自定义资源类型后,右键资源类型,点import

然后选择想要导入的文件即可。比如我这里导入了一个EXE

资源ID可以右键-属性进行修改,待会要用到这个ID

下面给出一个简单的WIN32应用程序,演示如何使用刚才导入的EXE资源。
程序的功能是将该EXE读取到内存中,然后写入到磁盘里。

BOOL UseCustomResource()
{// 定位资源HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_BINARY_IPMSG), "binary");if (NULL == hRsrc){MessageBox(0,"找不到资源", 0,0);     return FALSE;}// 获取资源大小DWORD dwSize = SizeofResource(NULL, hRsrc);if (0 == dwSize){MessageBox(0,"获取资源大小错误", 0,0);return FALSE;}    // 加载资源到内存中HGLOBAL hGlobal = LoadResource(NULL, hRsrc);if (NULL == hGlobal){MessageBox(0,"加载资源失败", 0,0);return FALSE;}// 获取资源数据指针LPVOID pBuffer = LockResource(hGlobal);if (NULL == pBuffer){MessageBox(0,"获取资源指针失败", 0,0);return FALSE;}// 写入磁盘FILE *fp = fopen("c:\\out.exe", "wb");if (NULL != fp){if (dwSize != fwrite(pBuffer, 1, dwSize, fp)){MessageBox(0,"写入文件失败", 0,0);fclose(fp);return FALSE;}fclose(fp);}MessageBox(0,"成功", 0,0);return TRUE;
}

至此演示完毕,资源里的EXE程序已经写入到C盘下。
与原文件比较,完全一致。

VC6导入和使用二进制资源相关推荐

  1. WPF教程(六)二进制资源

    WPF除了上节静态资源和动态资源,还有其它类型资源.学会如何添加使用会让我们编程变得更加游刃有余. 二进制资源其实是一些传统的资源项,比如位图,音频文件,视频文件,松散文件(LooseFile)等等. ...

  2. licenses.licx 未能将许可证文件“licenses.licx”转换为二进制资源__错误的解决

    之前我负责实验室一个项目的测试工作,到正规的机构认证这个软件.认证过后,那一坨代码便不管它了. 几天前,导师又突然让我演示那个程序,程序运行不起来了.编译一下,报错:licenses.licx 未能将 ...

  3. Cocos creator 导入 tiled map地图资源,cocos 显示地图错乱偏移

    1)Tiled map 中显示 (举例子随便画了一个) 2)Cocos creator显示的地图(严重错乱偏移) 3)修改过程 ①第一步: ②修改Trim type=none ③保存(正常显示了)

  4. 511遇见易语言资源表的导入和导出

    易语言资源表添加声音资源,图片资源,图片组资源,和向资源表中导入可执行文件,将资源表中的资源导出,使用资源表中的资源,通过随机播放音乐,随机播放图片,已经把exe文件写出并执行做了实例演示. 1. 向 ...

  5. QT笔记之VS2010 Qt中导入qrc资源文件

    转载1:http://qimo601.iteye.com/blog/1404693 转载2:http://blog.sina.com.cn/s/blog_92cde3060101lobm.html 转 ...

  6. 如何在Qt Creator中导入图标资源

    本文主要描述如何在Qt Creator中创建资源文件,并的打入导入图标文件. 查看图标资源文件时,可以在项目的工程文件上鼠标单击右键-Open With-资源编辑器,效果如下图所示: 在项目的工程文件 ...

  7. Cocos2d-x——导入Cocostudio资源

    (搬运自我在SegmentFault的博客) 目前正在和实训的小组成员一起做一款手机2D游戏,我们采用了Cocos2d-x进行开发.之前虽然早有耳闻,这次却是第一次认真地学习和使用Cocos2d-x. ...

  8. 电话资源导入微信/QQ通讯录操作方法

    <电话资源导入微信通讯录操作方法> --三少爷QQ:158376107 [VIP客户内部资源] 1.你得准备手机号码资源(获取渠道可以联系QQ:158276107) 2.电脑登录QQ打开应 ...

  9. Unity资源导入自动生成AssetBundle Name

    功能实现: ① Unity外部资源导入,拖拽资源,移动资源,reImport文件夹或者文件,自动生成Ab Name ② 生成AssetBundle配置文件,配置该文件夹下的忽略关键词和整体是否打包,添 ...

最新文章

  1. 忙了一上午终于把形状特征搞定了啊
  2. Excel 宏代码实现按相同值分组设置背景颜色
  3. java tostring的用处_JAVA的tostring()方法的作用是什么呢?
  4. 信息学奥赛一本通(1258:【例9.2】数字金字塔)
  5. LeetCode 147. Insertion Sort List
  6. linux常用命令(3)——系统管理1
  7. 【Oracle】Oracle错误编码大全
  8. endnote转化成纯文本后_EndNote X7如何去掉域代码生成纯文本文件
  9. 【Flutter--实战】Dart 语言快速入门
  10. ipv6正则表达式 java_正则表达式,匹配所有有效格式的IPv6地址
  11. VScode底部状态栏不见,手把手教学
  12. 山东农业大学计算机复试,山东农业大学复试录取分数线
  13. wim工具扫描linux磁盘,[V1.30.2011.501版]WimTool -- Wim文件的图形视窗处理工具[无忧首发]...
  14. ai绘画到底有大强?我开发了一款ai绘画(来看看)
  15. ubuntu18.04安装MPV视频播放器
  16. VBA:新增某个月的FC至Excel版物料Forecast
  17. 内网渗透思路10之SPN拿下域控
  18. Internet 上可用的“简单网络时间协议”时间服务器列表
  19. 弧齿锥齿轮零件图_弧齿锥齿轮齿轮基础知识
  20. 资深数据科学家教你如何在求职过程中找到心仪工作

热门文章

  1. Python编程语言学习:for循环实现对多个不同的DataFrame数据执行相同操作(可用于对分开的测试集、训练集实现执行相同逻辑任务)
  2. Py之terminaltables:terminaltables的简介、安装、使用方法之详细攻略
  3. ML之UL:无监督学习Unsupervised Learning的概念、应用、经典案例之详细攻略
  4. 成功解决AttributeError: module 'numpy' has no attribute 'equal'
  5. AI公开课:19.04.18俞益洲—深睿医疗CS《计算机视觉的应用与落地》课堂笔记以及个人感悟
  6. ML之LSOLS:LSOLS算法的简介、论文、算法的改进(最佳子集选择OFSS法、前向逐步回归FSR法)、代码实现等详细攻略
  7. is 和 == 区别 编码和解码
  8. 配置Docker代理已实现外网访问
  9. shopex还是ecshop
  10. (莱昂氏unix源代码分析导读-46)权限、管道