首先是添加资源
在资源类型中填写自己定义的类型
这是我自己导入的一个程序
导入之后开始编写代码,代码如下(可以添加一个消息响应函数生成该导入的程序)
1 HRSRC hRes; 2 hRes=FindResource(NULL,MAKEINTRESOURCE(IDR_EXE2),"EXE"); //找插入的资源 3 HGLOBAL hgRes; 4 hgRes=LoadResource(NULL,hRes); 5 void *pRes=LockResource(hgRes); 6 DWORD size; 7 size=SizeofResource(NULL,hRes); 8 char *hmem; 9 hmem=(char*)malloc(size+1); //分配内存块 10 if(hmem==NULL) 11 { 12 AfxMessageBox("分配内存失败!"); 13 return ; 14 } 15 WriteProcessMemory(GetCurrentProcess(),(void*)hmem,pRes,size,NULL); //写入内存块中 16 HANDLE FilePath; 17 //创建文件的路径属性等 18 FilePath=CreateFile("C:\Users\kjinziguiteer\Desktop\尽子轨.exe",GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 19 20 DWORD nWrite; 21 WriteFile(FilePath,(void*)hmem,size,&nWrite,NULL); 22 CloseHandle(FilePath); 23 //GlobalFree(hgRes); 24 MessageBox(NULL,"生成程序成功",NULL); 25 CDialog::OnOK(); 26
在这代码中有个错误,就是
1 HGLOBAL hgRes; 2 hgRes=LoadResource(NULL,hRes); 3 //GlobalFree(hgRes);//这行代码中是不需要释放资源句柄的,因为调用 //了该函数,之前不知道程序一直崩溃,甚是忧伤
这就可以解决了。拔凉拔凉的。