Yop à tous,

Voila j'ai un souci et je ne sais vraiment pas d'ou cela vient.
En fait je voudrait lister les resources d'un executable dans un treeview. Pour ce faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
BOOL __stdcall RcInit(char* szFilePath,HWND hwTV)
{
	hMod = LoadLibraryEx(szFilePath,NULL,DONT_RESOLVE_DLL_REFERENCES);
	if(hMod == NULL)return FALSE;

	EnumResourceTypes(hMod,(ENUMRESTYPEPROC)EnumResTypeProc,hwTV);

	return TRUE;
}
C'est ma fonction de départ. dedans je fais un EnumResourceType qui va appeler cette fonction callback :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
BOOL CALLBACK EnumResTypeProc(HMODULE hModule,LPTSTR lpszType,LONG_PTR lParam)
{
	TV_INSERTSTRUCT tvisItem;
	HTREEITEM hParent;
	
	/* Ajout root. */
	ZeroMemory(&(tvisItem.item), sizeof(TV_ITEM));

	tvisItem.item.mask  = TVIF_TEXT;

	tvisItem.hInsertAfter = TVI_LAST;
	tvisItem.hParent = TVI_ROOT;
	tvisItem.item.pszText = lpszType;

	hParent = TreeView_InsertItem(lParam,&tvisItem);

	if(EnumResourceNames(hMod,lpszType,(ENUMRESNAMEPROC)EnumResNameProc,hParent)==FALSE)
	{
		char szBuffer[10];
		wsprintf(szBuffer,"%d",GetLastError());
		MessageBox(NULL,"yop",szBuffer,MB_OK);
	}

	return TRUE;
}
Et j'ai bien dans mon treeview un type ici F_EXE qui est en root. Mais la ou cela coince c'est lors de l'appel de EnumResourceNames , j'ai un 998 Invalid access to memory location . Et je ne voi vraiment pas d'ou cela vien.

En fait dans ma tête ce que je veu faire, c'est pour chaque type de resource trouvée , liste les noms et les ajouter en enfant de mon type de resource dans mon treeview.

J'espère avoir été assez claire :s

Merci d'avance pour vos réponses.

Accesoirement je met la fonction callback pour les noms :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
BOOL CALLBACK EnumResNameProc(HMODULE hModule,LPCTSTR lpszType,LPTSTR lpszName,LONG_PTR lParam)
{
	TV_INSERTSTRUCT tvisItem;
	HTREEITEM hParent;
	/* Ajout root. */
	ZeroMemory(&(tvisItem.item), sizeof(TV_ITEM));

	tvisItem.item.mask  = TVIF_TEXT;

	tvisItem.hInsertAfter = TVI_LAST;
	tvisItem.hParent = lParam;
	tvisItem.item.pszText = lpszName;
	hParent = TreeView_InsertItem(hwTreeVRc,&tvisItem);

	return TRUE;

}