C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 69 - lpEnum->Next и типы объектов / ActiveX по шагам / Приложение

Шаг 69 - lpEnum->Next и типы объектов

С помощью этого метода мы можем двигаться по перечислителю хранилища.

ULONG uCount;
STATSTG stat;
while (lpEnum->Next(1,&stat,&uCount)==S_OK)
{
	cout << (LPSTR)stat.pwcsName << endl;
}
lpEnum->Release();

Информацию о типе объекта мы получаем в структуре STATSTG. В этой структуре есть поле type, с помощью которого мы можем определить тип объекта:

if (lpEnum!=NULL)
{
	cout << "Ok enum" << endl;
	ULONG uCount;
	STATSTG stat;

	while (lpEnum->Next(1,&stat,&uCount)==S_OK)
	{
		cout << (LPSTR)stat.pwcsName << endl;
		switch(stat.type)
		{
		case STGTY_STORAGE:
			cout << "Storage" << endl;
			break;
		case STGTY_STREAM:	
			cout << "Stream" << endl;
			break;
		case STGTY_LOCKBYTES:	
			cout << "LockBytes" << endl;
			break;
		case STGTY_PROPERTY:
			cout << "Property" << endl;
			break;
		default:
			cout << "Unknown type" << endl;
		}
	}
	lpEnum->Release(); 
}

pwcsName хранит название объекта. Вот теперь мы эти знания и применим к изучению имен в хранилище.

while (lpEnum->Next(1,&stat,&uCount)==S_OK)
{
	char buffer[100];
	wcstombs((CHAR*)&buffer,stat.pwcsName,sizeof(buffer)); 
	cout << buffer << endl;
}
Вот результат.
Ok open
Ok enum
1Table
Macros
 CompObj
ObjectPool
WordDocument
 SummaryInformation
 DocumentSummaryInformation
Press any key to continue

Вполне читаемо. А вот результат иследования Excel:

Ok open
Ok enum
Workbook
 SummaryInformation
 DocumentSummaryInformation
Press any key to continue

| |
Автор Каев Артем.
[AD]