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 :
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 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; }
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.
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; }
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; }
Partager