怎样由可执行文件a.exe和数据文件b生成另一个可执行文件(c.exe)? 
a中有个按钮,点击选择导入数据文件b,然后点另一个按钮生成c.exe。a.exe和b.exe是两个功能不同的软件
  能否给点思路?????????????? 谢谢

解决方案 »

  1.   

    去研究一下PE格式
    或者去看看这篇文章
    http://www.codeproject.com/KB/install/installbuilder.aspx其实实现方法网上还是蛮多的
      

  2.   

    核心代码如下:
    HRSRC hResInfo; 
    HGLOBAL hResData; 
    DWORD dwSize, dwWritten;
    LPBYTE p; 
    HANDLE hFile;
    TCHAR szTitle[100], szText[100]; // 查找所需的资源 
    hResInfo = FindResource( NULL, MAKEINTRESOURCE( IDR_SERVER ), "Server" ); 
         if ( hResInfo == NULL ) 
               { MessageBox( hDlg, "查找资源失败!", "错误", MB_OK | MB_ICONINFORMATION ); 
                   break; 
               } 
    // 获得资源尺寸
     dwSize = SizeofResource( NULL, hResInfo );
     // 装载资源
     hResData = LoadResource( NULL, hResInfo ); 
    if ( hResData == NULL )
     {
     MessageBox( hDlg, "装载资源失败!", "错误", MB_OK | MB_ICONINFORMATION ); break; } // 为数据分配空间 
    p = (LPBYTE)GlobalAlloc( GPTR, dwSize ); 
    if ( p == NULL )
     {
     MessageBox( hDlg, "分配内存失败!", "错误", MB_OK | MB_ICONINFORMATION 
    );
    break; 
    } // 复制资源数据
     CopyMemory( (LPVOID)p, (LPCVOID)LockResource( hResData ), dwSize ); // 获取标题和文本,并复制数据 GetDlgItemText( hDlg, IDC_EDT_TITLE, szTitle, 100 );
     GetDlgItemText(hDlg, IDC_EDT_TEXT, szText, 100); 
    CopyMemory( (LPVOID)( p + 0x800 ), (LPCVOID)szTitle, 100 ); 
    CopyMemory( (LPVOID)( p + 0x864 ), (LPCVOID)szText, 100 );
     // 创建文件,写数据
     hFile = CreateFile( "C:\MsgBox.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL ); 
    if ( hFile != NULL ) 
    WriteFile( hFile, (LPCVOID)p, dwSize, &dwWritten, NULL );
     else { MessageBox( hDlg, "创建文件失败!", "错误", MB_OK | MB_ICONINFORMATION );
     GlobalFree( (HGLOBAL)p ); break; } 
    // 收尾工作,释放资源
    CloseHandle( hFile ); 
    GlobalFree( (HGLOBAL)p );
      

  3.   

    lz注意,你这个要求跟c++没关系,这是操作系统相关的知识。