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 руб./мес


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




 38 - Проверяем пользовательскую ошибку / Отладка / Visual C++

Шаг 38 - Проверяем пользовательскую ошибку

Мы явно вызовем DLL, как это было сделано в шаге "Шаг 41 - Явный вызов функций DLL". Создаем код для тестирования, не забываем, что нам нужно чтобы DLL была доступна.

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

typedef  VOID (WINAPI MESS)();


void main()
{
	HINSTANCE hModule=NULL;
	hModule=::LoadLibrary("DllExcel.dll");
	if (hModule!=NULL)
	{
		MESS* me=NULL;
		me=(MESS*)::GetProcAddress((HMODULE)hModule,"MyTest");
		if (me!=NULL)
		{
			(*me)();
			
			LPVOID lpMsgBuf;
			FormatMessage( 
				FORMAT_MESSAGE_ALLOCATE_BUFFER | 
				FORMAT_MESSAGE_FROM_HMODULE	,
				hModule, GetLastError(),
				MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
				(PTSTR) &lpMsgBuf, 0, NULL );
			cout << (char*)lpMsgBuf << endl;
		}
		else cout << "Error Load function" << endl;
	}
	else cout << "error load Dll" << endl;
	::FreeLibrary(hModule); 
}

Запускаем.

38_1.gif (3058 b)

Появится предусмотренное функцией диалоговое окно, а дальше сообщение о нашей ошибке.

38_2.gif (2232 b)

Обратить внимание нужно на то, что передается флаг получения описания ошибки из модуля FORMAT_MESSAGE_FROM_HMODULE. Так же ошибку можно увидеть в Error LookUp.

38_3.gif (3563 b)

Но при условии, что Вы добавите в модуль название DLL.

38_4.gif (3753 b)

Полный код в проекте.


Загрузить проект | | |
Автор Каев Артем.
[AD]