zoukankan      html  css  js  c++  java
  • 在一个程序中加载另一程序使用GlobalFree()函数出错的原因

    首先是添加资源

    在资源类型中填写自己定义的类型

    这是我自己导入的一个程序

    导入之后开始编写代码,代码如下(可以添加一个消息响应函数生成该导入的程序)

     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);//这行代码中是不需要释放资源句柄的,因为调用 //了该函数,之前不知道程序一直崩溃,甚是忧伤

    这就可以解决了。拔凉拔凉的。

  • 相关阅读:
    ES6学习之数组扩展
    js三元表达式
    ES6学习之函数扩展
    TS学习之for..of
    TS学习之Symbol
    Visual Studio编译时报错“函数名:重定义;不同的基类型”
    Windows Visual Studio中修改PostgreSQL代码后调试报错
    Windows安装MySQL5.7.17
    289. Game of Life -- In-place计算游戏的下一个状态
    Swift的 convenience && designated init
  • 原文地址:https://www.cnblogs.com/newworldcom/p/3459961.html
Copyright © 2011-2022 走看看