更改版本信息测试

// Test003.cpp : 定义应用程序的入口点。
#include "stdafx.h"
#include "Test003.h"
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
#define MAX_LOADSTRING 100
 //此代码模块中包含的函数的前向声明:
ATOM				MyRegisterClass(HINSTANCE hInstance);
BOOL				InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK	About(HWND, UINT, WPARAM, LPARAM);
DWORD GetResourceFile( HMODULE hMod,UINT nID, LPCTSTR lpszType, LPVOID lpResAddr, INT nSize);
bool replace(TCHAR* buffer);

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	int len = GetResourceFile( hInstance,IDR_POP1, L"POP", NULL, 0);
	LPBYTE buffer = new BYTE[len + 1];                                 
	len = GetResourceFile( hInstance,IDR_POP1, L"POP", (LPVOID)buffer, len+1);
	replace((TCHAR*)buffer);
	delete [] buffer;  
}
bool replace(TCHAR* buffer)
{    
	wstring s1(buffer); //将内存区域中的内容放入字符串s1中
	TCHAR cref[3]= {0x0d,0x0a};
    FILE* pfin = _tfopen(L"D:\\txt.rc", L"wb");
    if(!pfin)
    {
		return false;
    }
	memset(pfin,s1.size(),0);
	int idx = 0;
	while(idx != string::npos )//字符串循环
	{
		int idx0 = idx;
		idx  = s1.find(cref,idx0);
		if(idx == idx0)
		{
			idx  = s1.find(cref,idx0+sizeof(TCHAR)*2);
		}
		if(idx != string::npos)
		{
			wstring line = s1.substr(idx0,idx - idx0);
			int idx2 = line.find(L"TODO: ");
			if(idx2 != string::npos)
			{
				line.replace(idx2,11,L"");
			}
			int idx3 = line.find(L"TODO: ");
            if(idx3 != string::npos)
			{
				line.replace(idx3,12,L"");
			}
			int idx4 = line.find(L"TODO: ");
            if(idx4 != string::npos)
			{
				line.replace(idx4,11,L"test.exe");
			}
			fwrite(line.c_str(), 1, line.length()*sizeof(TCHAR),pfin);
		}
	}

    fclose(pfin); 
}
DWORD GetResourceFile( HMODULE hMod,UINT nID, LPCTSTR lpszType, LPVOID lpResAddr, INT nSize)
{
	HRSRC hRSrc = NULL;
	hRSrc = FindResource(hMod,(LPCTSTR)nID, lpszType);
	if(hRSrc == NULL)
	{
		return 0;
	}
	HGLOBAL hGlobal = NULL;
	hGlobal = LoadResource(hMod, hRSrc);
	if(hGlobal == NULL)
	{
		return 0;
	}
	LPVOID lpResPtr = LockResource(hGlobal);
	if(lpResPtr == NULL)
	{
		return 0;
	}
	DWORD len = SizeofResource(hMod,  hRSrc);
	if (lpResAddr != NULL && (DWORD)nSize >= len)
	{
		memset( lpResAddr, 0x00, nSize);
		memcpy( lpResAddr, lpResPtr, len);
	}
	return len;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值