作用:

在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。

1.      默认的皮肤压缩包或语言包。一些支持换肤的软件特别是一些媒体播放器常常有自定义的皮肤文件(你可以尝试将Media Player或千千静听等软件的Skins目录下的文件的扩展名改为.zip,然后使用WinZip打开看一下),但为了防止Skin文件丢失导致软件无 法显示,他们常常会在EXE文件中内置一套Skin作为默认的皮肤文件。同样,一些支持多语言的EXE文件中存在默认语言包也是这个道理(当然也可以使用 "String Table"资源类型);

2.      做为一些病毒/木马程序的寄生方式。如果不小心执行了带有病毒/木马的程序,它们会在你运行时释放出病毒/木马文件。当然许多病毒是将自身写入PE文件头来实现;

3.      合并EXE与它所需要的DLL文件。出于某些原因程序作者有时可能需要将DLL文件嵌入到可执行的EXE文件中,这可以通过使用自定义资源来实现;

4.      其它需要在程序中播放一个AVI动画等等,都可以通过将二进制的数据文件作为自定义资源加入到可执行文件中来实现;

来自:https://www.cnblogs.com/gakusei/articles/1352922.html

//获取指定模块的资源
HRSRC hRsrc1 = FindResource(NULL, MAKEINTRESOURCE(IDR_GUISHOU1), TEXT("GUISHOU"));
HRSRC hRsrc2 = FindResource(NULL, MAKEINTRESOURCE(IDR_GUISHOU2), TEXT("GUISHOU")); if (hRsrc1==NULL|| hRsrc2==NULL)
{
m_Edit += L"查找资源失败\r\n";
}
else
{
m_Edit += L"查找资源成功\r\n";
} //获取资源大小
DWORD dwSize1 = SizeofResource(NULL, hRsrc1);
DWORD dwSize2 = SizeofResource(NULL, hRsrc2);
if (dwSize1&&dwSize2)
{
m_Edit += L"获取资源大小成功\r\n";
}
else
{
m_Edit += L"获取资源大小失败\r\n";
} //将资源加载到内存
HGLOBAL hGlobal1 = LoadResource(NULL, hRsrc1);
HGLOBAL hGlobal2 = LoadResource(NULL, hRsrc2);
if (hGlobal1&&hGlobal1)
{
m_Edit += L"资源加载成功\r\n";
}
else
{
m_Edit += L"资源加载失败\r\n";
} //锁定资源
LPVOID lpVoid1 = LockResource(hGlobal1);
LPVOID lpVoid2 = LockResource(hGlobal2);
if (lpVoid1&&lpVoid2)
{
m_Edit += L"资源锁定成功\r\n";
}
else
{
m_Edit += L"资源锁定失败\r\n";
} //将资源保存为文件
FILE* fp1 = NULL;
FILE* fp2 = NULL;
fopen_s(&fp1, "MyHookDll.dll", "wb+");
fopen_s(&fp2, "TestDll.dll", "wb+");
if (fp1&&fp2)
{
m_Edit += L"资源载入本地成功\r\n";
}
fwrite(lpVoid1,sizeof(char),dwSize1,fp1);
fwrite(lpVoid2,sizeof(char),dwSize2,fp2);
fclose(fp1);
fclose(fp2);
UpdateData(FALSE);

FindResource用来在一个指定的模块中定位所指定的资源:

HRSRC FindResource(

HMODULE hModule,                //包含所需资源的模块句柄,如果是程序本身,可以置为NULL

LPCTSTR lpName,         //可以是资源名称或资源ID

LPCTSTR lpType          //资源类型,在这里也就是我们自己指定的资源类型

);

LoadResource用来将所指定的资源加载到内存当中;

HGLOBAL LoadResource(

HMODULE hModule,                //模块句柄,同上

HRSRC hResInfo          //需要加载的资源句柄,这里也就是FindResource的返回值

);

LockResource用来锁定内存中的资源数据块,它的返回值也就是我们要使用的直系指向资源数据的内存指针;

LPVOID LockResource(

HGLOBAL hResData                //指向内存中要锁定的资源数据块,这里也就是LoadResource的返回值

);

项目来自:https://github.com/TonyChen56/HackerTools

mfc HackerTools释放资源的更多相关文章

  1. mfc HackerTools防止程序双开

    来自:https://github.com/TonyChen56/HackerTools 1 HANDLE hMutex = CreateMutexA(NULL, FALSE, "GuiSh ...

  2. mfc HackerTools监控键盘按键

    string GetKey(int Key) { string KeyString = ""; //判断符号输入 const int KeyPressMask = 0x800000 ...

  3. mfc HackerTools远程线程注入

    在一个进程中,调用CreateThread或CreateRemoteThreadEx函数,在另一个进程内创建一个线程(因为不在同一个进程中,所以叫做远程线程).创建的线程一般为Windows API函 ...

  4. mfc HackerTools进程令牌设置为debug权限

    博客园:https://www.cnblogs.com/ndyxb/p/12734717.html 要对一个任意进程(包括系统安全进程和服务进程)进行指定了写相关的访问权的OpenProcess操作, ...

  5. mfc HackerTools全局钩子

    钩子英文名叫Hook,是一种截获windows系统中某应用程序或者所有进程的消息的一种技术. 如在键盘中按下一键,操作系统将收到键按下消息,把消息放入消息队列,然后消息队列对消息进行派发,发给相应的应 ...

  6. mfc HackerTools拖动文件

    VOID DragAcceptFiles(          HWND hWnd,    BOOL fAccept); 这个函数的调用,表示你要让某个窗体能够接受文件的拖入.第一个参数指定是哪个窗口, ...

  7. MFC-01-Chapter01:Hello,MFC---1.3 第一个MFC程序(02)

    1.3.1 应用程序对象 MFC应用程序的核心就是基于CWinApp类的应用程序对象,CWinApp提供了消息循环来检索消息并将消息调度给应用程序的窗口.当包含头文件<afxwin.h>, ...

  8. MFC对话框中显示BMP,JPG图片

    //************************************ // 方法说明:    显示JPG和GIF.BMP图片 // 参数说明:    CDC * pDC           设 ...

  9. 孙鑫MFC学习笔记4:MFC画图

    1.画线方法 *1.捕获鼠标按下和弹起消息,获取两个点 *2.消息响应,画线 2.在CMainFrame类中的鼠标左键事件得不到响应的原因是CNameView覆盖了CMainFrame 3.注释宏 4 ...

随机推荐

  1. 如何修改product.product的display_name的显示,解决_rec_name失效的问题

    回顾学习 之前有讲解过display_name是怎么由来的,odoo会去取_rec_name的值,会将_rec_name的值赋值给display_name. class FandxProduct(mo ...

  2. 聪明的YZH

    [题目描述](杨子恒大佬) 聪明的YZH又开始搭积木了-- 他用1*1*1的立方体在n*m的平面搭积木,举几个他的杰作: 现在他又搭完了一个完美的杰作,他很好奇这对积木的表面积是多大 . [输入格式] ...

  3. 单点登录详解(token简述)(七)

    前言 为什么整理单点登录? 主要的原因还是自己以前学习的时候曾经用过,但是时间太久,忘记了里面用到了哪些技术.及如何实现的,每次想到单点登录总是感觉即会又不会,这次整理session时,又涉及到了单点 ...

  4. Java 给Word添加印章

    一.概述 本文以Java程序代码展示如何给Word文档添加印章,这里添加的印章为.png格式的图片,添加印章即在Word中的指定位置添加印章图片. 基本思路:加载word文档,获取段落,在段落中插入图 ...

  5. 开源低代码平台开发实践二:从 0 构建一个基于 ER 图的低代码后端

    前后端分离了! 第一次知道这个事情的时候,内心是困惑的. 前端都出去搞 SPA,SEO 们同意吗? 后来,SSR 来了. 他说:"SEO 们同意了!" 任何人的反对,都没用了,时代 ...

  6. 深入刨析tomcat 之---第14篇 对应19章,使用manager管理 web应用

    writedby 张艳涛 第19章讲的是管理程序,当一个tomcat启动的时候,能通过远程浏览器能访问tomcat,启动web应用,关闭web应用,查看web应用 怎么实现的呢? 在webapp 文件 ...

  7. Python - 基础数据类型 dict 字典

    字典简介 字典在 Python 里面是非常重要的数据类型,而且很常用 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一 ...

  8. spring Data Rest 远程命令执行漏洞(CVE-2017-8046)

    参考 文章https://blog.csdn.net/weixin_41438728/article/details/110425174 影响版本 Spring Framework 5.0 to 5. ...

  9. 在Java开发工具的project中使用相对路径

    1.在project中,相对路径的根目录是project的根文件夹,在此就是repathtest文件夹了.创建文件的写法是: File f = new File("src/com/lavas ...

  10. Spring Boot实现数据访问计数器

    1.数据访问计数器   在Spring Boot项目中,有时需要数据访问计数器.大致有下列三种情形: 1)纯计数:如登录的密码错误计数,超过门限N次,则表示计数器满,此时可进行下一步处理,如锁定该账户 ...