我在VC里面加了个自定义资源, 现在可以访问,并且可以向外写数据,不过怎么才能动态的修改这个资源里面的内容呢?
就是我做个界面,从截面里面读进去内容写到这个自定义资源里面去

解决方案 »

  1.   

    BeginUpdateResource
    UpdateResource
    EndUpdateResource
    不要把资源放在当前已加载的模块中,比如EXE,应该放在一个独立的DLL或EXE中
      

  2.   

    有具体的实现代码吗? 读外面的exe文件怎么读取? 
      

  3.   

    读自己的资源文件可以这样
    HRSRC hRsrc = FindResource(NULL, MAKEINTRESOURCE(IDR_MyType6), TEXT("MyType"));
    if (NULL == hRsrc)
    return FALSE;
    //获取资源的大小
    DWORD dwSize = SizeofResource(NULL, hRsrc);  if (0 == dwSize)
    return FALSE;
    //加载资源
    HGLOBAL hGlobal = LoadResource(NULL, hRsrc); 
    if (NULL == hGlobal)
    return FALSE;
    //锁定资源
    LPVOID pBuffer = LockResource(hGlobal); 
    if (NULL == pBuffer)
    return FALSE;
    那读外面exe里面的资源文件要如何读取呢 谢谢赐教
      

  4.   

    FindResource的第一个参数换成外面exe文件模块的句柄即可
      

  5.   

    假如我在一个test.exe里面添加了个EXE类型的IDR_EXE2的二进制文件,我现在想通过action.exe
    文件修改这个二进制文件,
    CString ss("hello");
    LPVOID lpResource;
    lpResource = &ss;
    hUpdate = BeginUpdateResource("test.exe", false);
    UpdateResource(hUpdate, 
                  (LPCSTR)EXE, 
                  (LPCSTR)2, 
                  MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
                  lpResource,
          这里应该如何写呢?);
    EndUpdateResource(hUpdate, false);
    我查了下MSDN,有点看不明白,请教大哥
      

  6.   

    CString ss("hello");
    LPVOID lpResource = (LPVOID)ss.GetBuffer(0);
    DWORD length = (DWORD)ss.GetLength();
    hUpdate = BeginUpdateResource("test.exe", false); 
    UpdateResource(hUpdate, 
                  _T("EXE"), 
                  (LPCSTR)IDR_EXE2, 
                  MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), 
                  lpResource, 
                  length); 
    EndUpdateResource(hUpdate, false);