⒈ 目的:替换exe资源里的一个位图
⒉ 已知:位图文件在exe中的偏移地址:002c098,长度:0180,资源名称:1003
⒊ 提供:待替换的位图 cn.bmp 且路径为“szFilePath”诚心求解:如何利用 CreateFile 和 ReadFile,将cn.bmp读到字符数组中?例如这样的数组:
BYTE cmp[20] = {0x32, 0x00, 0x2E, 0x00, 0x38, 0x00, 0x31, 0x00,
0x20, 0x00, 0x42, 0x00, 0x65, 0x00, 0x74, 0x00,
0x61, 0x00, 0x32, 0x00};如果图片太大了,又如何判断超过了数组容量?或者:有其他办法,读取本地的一个bmp文件,来替换掉exe里的相应资源?早晨起床到现在,忙了很久了,一直没有解决。因本人业余自学编程,只能达到照猫画虎的水平,请高人授以源代码,不胜感激!!
================================
请帮助,解决后请到这里送60分:http://community.csdn.net/Expert/TopicView1.asp?id=4887135
⒉ 已知:位图文件在exe中的偏移地址:002c098,长度:0180,资源名称:1003
⒊ 提供:待替换的位图 cn.bmp 且路径为“szFilePath”诚心求解:如何利用 CreateFile 和 ReadFile,将cn.bmp读到字符数组中?例如这样的数组:
BYTE cmp[20] = {0x32, 0x00, 0x2E, 0x00, 0x38, 0x00, 0x31, 0x00,
0x20, 0x00, 0x42, 0x00, 0x65, 0x00, 0x74, 0x00,
0x61, 0x00, 0x32, 0x00};如果图片太大了,又如何判断超过了数组容量?或者:有其他办法,读取本地的一个bmp文件,来替换掉exe里的相应资源?早晨起床到现在,忙了很久了,一直没有解决。因本人业余自学编程,只能达到照猫画虎的水平,请高人授以源代码,不胜感激!!
================================
请帮助,解决后请到这里送60分:http://community.csdn.net/Expert/TopicView1.asp?id=4887135
看你怎么用了
你要不显示跟十六进制没关系
试了试,还是不行。
查了很久的MSDN,似乎这方面的资料非常少。究竟要如何才能通过编程来实现替换掉exe文件中的图片呢?
DWORD dwWrite = 0;
unsigned char DataCN[8000];
FILE *fin;
int i = 0;
fin = fopen(szTemp, "rb"); // szTemp为cn.bmp文件路径
if (fin != NULL)
{
while (!feof(fin))
{
DataCN[i] = getc(fin);
i++;
}
fclose(fin);
}
SetFilePointer(g_hFile, 0x2C218, NULL, FILE_BEGIN); // g_hFile为wbjju.ime的句柄
WriteFile(g_hFile, DataCN, 7000, &dwWrite, NULL); // 此处暂用7000