如何在VC实现呢? 用的是int API WinMain()

解决方案 »

  1.   

    bool CKeygenDlg::Res2File(LPCTSTR lpName, LPCTSTR lpType, LPCTSTR filename)
    {
    HRSRC hRes = ::FindResource( NULL, lpName, lpType ); 
    HGLOBAL gl =::LoadResource( NULL, hRes ); 
    LPVOID lp = ::LockResource( gl ); 
    HANDLE fp = ::CreateFile( filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL ); 
    if( fp == INVALID_HANDLE_VALUE ) 
    return FALSE;
    DWORD a; 
    if( !::WriteFile( fp, lp, SizeofResource( NULL, hRes ), &a, NULL ) ) 
    return FALSE; 

    CloseHandle( fp );
    FreeResource( gl );
    return TRUE;
    }
      

  2.   

    看看这篇文章,对你应该有帮助http://www.titilima.cn/readarticle.php?id=42
    要达到你的要求,没必要和文章那样复杂,你需要的可能只是
    BOOL CreateServer()
    {
        HRSRC hResInfo;
        HGLOBAL hResData;
        DWORD dwSize, dwWritten;
        HANDLE hFile;
        // 查找所需的资源
        hResInfo = FindResource( NULL, MAKEINTRESOURCE(IDR_SERVER), "Server" );
        if ( hResInfo == NULL )
            return FALSE;
        // 获得资源尺寸
        dwSize = SizeofResource( NULL, hResInfo );
        // 装载资源
        hResData = LoadResource( NULL, hResInfo );
        if ( hResData == NULL )
            return FALSE;
        // 写文件
        hFile = CreateFile( "C:\\MsgBox.exe", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL );
        if ( hFile == NULL )
            return FALSE;
        WriteFile( hFile, (LPCVOID)LockResource( hResData ), dwSize, &dwWritten, NULL );
        CloseHandle( hFile );
        return TRUE;
    }
    具体看原文吧