Sortir un fichier depuis une ressource RCDATA

Quelques lignes pour remettre sous forme de fichier une ressource préalablement incorporée.

Par exemple, via le fichier RC :

42	RCDATA	"../release/fichier.dll"

Puis ce bout de code :

bool RSCRCtoFile(DWORD id, const wchar_t * file)
{
	bool reussite = false;
	if(HRSRC maRefRessource = FindResource(NULL, MAKEINTRESOURCE(id), RT_RCDATA))
	{
		if(DWORD tailleRessource = SizeofResource(NULL, maRefRessource))
		{
			if(HGLOBAL maRessource = LoadResource(NULL, maRefRessource))
			{
				if(LPVOID ptrRessource = LockResource(maRessource))
				{
					if(HANDLE hFile = CreateFile(file, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL))
					{	
						DWORD dwBytesWritten;
						reussite = WriteFile(hFile, ptrRessource, tailleRessource, &dwBytesWritten, NULL) != 0;
						CloseHandle(hFile);
					}
				}
				FreeResource(maRessource);
			}
		}
	}
	return reussite;
}

Référence : http://msdn.microsoft.com/library/ff468901.aspx

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.