Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1017602
  • 博文数量: 243
  • 博客积分: 3053
  • 博客等级: 中校
  • 技术积分: 2975
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-02 21:11
文章分类

全部博文(243)

文章存档

2013年(2)

2012年(20)

2011年(5)

2010年(114)

2009年(102)

我的朋友

分类:

2010-12-08 18:22:25

        信息的

 CDynLinkLibrary列表,可以示模及其展模的有信息。下面,出一个实现,它示程序的当前模名称、句柄和初始化的CRuntimeClass,然后示所有展模的名称名称、句柄和初始化的CRuntimeClass

#ifdef _DEBUG

AFX_MODULE_STATE* pState = AfxGetModuleState();

//用程序的名称和句柄

TRACE("APP %s HANDLE %x\r\n", pState->m_lpszCurrentAppName,

pState->m_hCurrentInstanceHandle);

TCHAR szT[256];

int nClasses;

nClasses=0;

//CRuntimeClass信息

AfxLockGlobals(CRIT_RUNTIMECLASSLIST);

for (CRuntimeClass* pClass = pModuleState->m_classList;

pClass != NULL;pClass = pClass->m_pNextClass)

{

nClasses++;

TRACE("CRuntimeClass: %s\r\n",pClass->m_lpszClassName, );

}

AfxUnlockGlobals(CRIT_RUNTIMECLASSLIST);

TRACE("all %d classes\r\n", nClasses);

//CDynLinkLibrary列表

AfxLockGlobals(CRIT_DYNLINKLIST);

for (CDynLinkLibrary* pDLL = pState->m_libraryList; pDLL != NULL;

pDLL = pDLL->m_pNextDLL)

{

// 得到模名并且

TCHAR szName[64];

GetModuleFileName(pDLL->m_hModule, szName, sizeof(szName));

TRACE("MODULE %s HANDLE IS %x \r\n", szName, pDLL->m_hModule);

//得到CRuntimeClass信息并

nClasses = 0;

for (CRuntimeClass* pClass = pDLL->m_classList;

pClass != NULL; pClass = pClass->m_pNextClass)

{

nClasses++;

TRACE("CRuntimeClass: %s\r\n",pClass->m_lpszClassName, );

}

wsprintf(szT, _T(" Module %s has %d classes"),szName, nClasses);

}

AfxUnlockGlobals(CRIT_DYNLINKLIST);

#endif

使用MFC提供的调试函数AfxDoForAllClasses可以得到DLLCRuntimeClass的信息。上述实现类似于AfxDoForAllClasses函数的理,只不增加了模名和模句柄信息。

阅读(814) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~