社区
进程/线程/DLL
帖子详情
VC程序中如何加载一个NE格式的EXE中的资源?
0153
2004-10-18 10:42:21
我的程序需要加载一个NE格式的EXE中的资源,但使用LoadLibraryEx或GetModuleHandle等函数均不行,出错代码是不能打开非PE格式。
但是我看到有的软件能获取NE格式的EXE中的资源,当然VC自己也行。因此肯定有另外的方法,有谁知道,望不吝赐教。
...全文
87
9
打赏
收藏
VC程序中如何加载一个NE格式的EXE中的资源?
我的程序需要加载一个NE格式的EXE中的资源,但使用LoadLibraryEx或GetModuleHandle等函数均不行,出错代码是不能打开非PE格式。 但是我看到有的软件能获取NE格式的EXE中的资源,当然VC自己也行。因此肯定有另外的方法,有谁知道,望不吝赐教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
0153
2004-10-20
打赏
举报
回复
解决方法就是按照二楼shxd(龙)提供的网址下载了NE格式的说明后自己处理。
0153
2004-10-20
打赏
举报
回复
以下是我从NE文件提取资源的代码,供大家参考
class cNEFile {
private:
LPBYTE lpData;
DWORD m_FileSize;
public:
cNEFile();
BOOL Init(LPCSTR);
void Exit();
LPVOID GetResource(UINT, LPSTR, DWORD &);
};
cNEFile::cNEFile()
{
ZeroMemory(this, sizeof(cNEFile));
}
BOOL cNEFile::Init(LPCSTR lpfilename)
{
HANDLE hf;
DWORD size;
hf=CreateFile(lpfilename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hf==NULL) return FALSE;
m_FileSize=GetFileSize(hf, NULL);
lpData=(LPBYTE)malloc(m_FileSize);
if (lpData==NULL)
{
CloseHandle(hf);
return FALSE;
}
ReadFile(hf, lpData, m_FileSize, &size, NULL);
CloseHandle(hf);
return TRUE;
}
void cNEFile::Exit()
{
if (lpData)
{
free(lpData);
lpData=NULL;
}
}
LPVOID cNEFile::GetResource(UINT id, LPSTR type, DWORD &size)
{//其中id=资源的ID号(如IDI_MYICON),type=资源类型(如RT_BITMAP)
LPBYTE lpNE,lpRes,p,t;
WORD res_shift,type_id,res_num,i,res_id;
if (*(LPWORD)(lpData+0x18)<0x40) return(NULL);
lpNE=lpData+*(LPWORD)(lpData+0x3C);
if (*(LPWORD)lpNE!=0x454E) return(NULL);
lpRes=lpNE+*(LPWORD)(lpNE+0x24);
res_shift=*(LPWORD)lpRes;
for (p=lpRes+2;*(LPWORD)p;)
{
type_id=*(LPWORD)p;
res_num=*(LPWORD)(p+2);
p+=8;
if ((type_id&0x8000)&&(type_id&0x7FFF)==(WORD)type)
{
t=p;
for (i=0;i<res_num;i++)
{
res_id=*(LPWORD)(t+6);
if ((res_id&0x8000)&&(res_id&0x7FFF)==(WORD)id)
{
size=(DWORD)*(LPWORD)(t+2)<<res_shift;
return((LPVOID)(lpData+((DWORD)*(LPWORD)t<<res_shift)));
}
t+=12;
}
}
p+=res_num*12;
}
return(NULL);
}
DentistryDoctor
2004-10-19
打赏
举报
回复
NE?
shxd
2004-10-19
打赏
举报
回复
怎么到处看到楼主发同样的贴?
下面是各种文件格式的描述,应该对楼主有用,楼主看看 :-)
http://www.wotsit.org/search.asp?s=windows
Visual_Li
2004-10-19
打赏
举报
回复
第一次听说NE
赶紧溜进来看看,但是好像。。。。。。没有答案啊
DentistryDoctor
2004-10-19
打赏
举报
回复
Try to read this article:
http://www.codeguru.com/Cpp/W-P/dll/article.php/c3653/
pepsi1980
2004-10-19
打赏
举报
回复
mark
oyljerry
2004-10-19
打赏
举报
回复
New Exe文件格式
roger_ding
2004-10-18
打赏
举报
回复
根据NE格式自己去找吧,不是很复杂的
HGE_系列教材(1-9)
如果我们需要在
程序
中
显示
一个
气球,这个气球的颜色不断变化,这时候我们并不需要准备 多张不同颜色的气球纹理,而只需要一张白色的气球纹理,设置blend 为BLEND_COL ORMUL,白色的R,G,B 值被表示成1.0,也就是说,...
基于AT89S52 单片的频率计
Protel DXP 是
一个
单个的应用
程序
,能够提供从概念到完成板卡设计项目的 所有功能要求,其集成程度在PCB 设计行业
中
前所未见。Protel DXP 采用一种 新的方法来进行板卡设计,使你能够享受极大的自由,从而能够使你在...
link.
exe
(
VC
链接
程序
)常用参数
/ALIGN 选项指定
程序
线性地址空间
中
每一节的对齐方式。number 参数以字节为单位,并且必须是 2 的幂。默认值是 4K (4096)。如果对齐方式产生无效的图像,则链接器发出警告。 除非正在编写诸如设备驱动
程序
...
微信小
程序
中
-[渲染层网络层错误] pages/card/card.wxss
中
的本地
资源
图片无法通过 WXSS 获取-解决办法
pages/index/index.wxss
中
的本地
资源
图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用标签。 小
程序
样式
中
不允许小
程序
路径 2、解决方法 1. 使用图片的网络路径 background:url('...
VC
6.0
中
的make文件要引用到的cl.
exe
rc.
exe
link.
exe
VC
6.0
中
的make文件要引用到的cl.
exe
rc.
exe
link.
exe
进程/线程/DLL
15,471
社区成员
49,182
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章