| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 45 - Извлечение имен ресурсов EnumResourceNames().

Типы ресурсов мы получили, но для доступа к самим ресурсам нам нужно получить их имена. Вот для этого и существует функция EnumResourceNames():
BOOL EnumResourceNames
(  
  HMODULE hModule,             // модуль
  LPCTSTR lpszType,            // тип ресурса
  ENUMRESNAMEPROC lpEnumFunc,  // вызываемая функция
  LONG_PTR lParam              // параметры определенные программистом
);
Ну и применим к нашей программе:
// ResTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"
#include "iostream.h"

BOOL WINAPI EnumTypesFunc(HMODULE hModule,LPTSTR lpType, LONG lParam);
BOOL WINAPI EnumNamesFunc(HMODULE hModule, LPCTSTR lpType,LPTSTR lpName,LONG lParam);  

void main()
{
HMODULE hMod=NULL;
hMod = LoadLibrary("notepad.exe");  
if (hMod != NULL) 	
{
	EnumResourceTypes(hMod,(ENUMRESTYPEPROC)EnumTypesFunc,0);                              
	FreeLibrary(hMod);
}
else cout << "Not Load Module";
}

BOOL WINAPI EnumTypesFunc(HMODULE hModule,LPTSTR lpType, LONG lParam)
{
    char buffer[100];
	if ((ULONG)lpType & 0xFFFF0000)     
	{ 
        sprintf(buffer, "%s\n", lpType);     
	}     
	else 
    {         
		sprintf(buffer, "%u\n", (USHORT)lpType);     
	}  
	cout << "Type " << buffer << endl;
	EnumResourceNames(hModule,lpType,(ENUMRESNAMEPROC)EnumNamesFunc,0); 
	return true;
}

BOOL WINAPI EnumNamesFunc(HMODULE hModule, LPCTSTR lpType,LPTSTR lpName,LONG lParam)
{
	char buffer[100];
	if ((ULONG)lpName & 0xFFFF0000)     
	{ 
        sprintf(buffer,"%s\n", lpName);  
	}     
	else 
    	{ 
        sprintf(buffer, "%u\n",(USHORT)lpName);     
	} 
	cout << "Name Res " << buffer << endl;
	return true;
}
Пример результата ее работы:
........
Type 9
Name Res1
Name Res2
Type 14
Name Res1
Name Res2
Type 16
Name Res1
Кстати к ресурсам можно обращаться как по именам, так и по идентификаторам. Вот теперь мы получили имена ресурсов и их типы. Можно извлекать их из модуля. По этому поводу есть функции, например, LoadImage(), LoadIcon(), LoadMenu(), LoadCursor() ну и так далее.
Предыдущий Шаг | Следующий Шаг | Оглавление

By Artem.
Используются технологии uCoz
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz