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

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

  • 相关阅读:
    博客CSS样式 二
    产品经理
    HttpClient调用doGet、doPost、JSON传参及获得返回值
    Maven无法下载com.oracle:ojdbc.jar解决方法
    EasyExcel导入导出
    centos7 安装supervisor教程以及常见问题
    Django与Celery的安装使用
    亚马逊广告api v2版php扩展库
    Mac VMware Fusion CentOS7 安装、配置静态IP文档
    常见Web安全问题攻防解析
  • 原文地址:https://www.cnblogs.com/newworldcom/p/3459961.html
Copyright © 2020-2023  润新知