下面的函数没有正确返回向量,因为如果我想在另一个函数中使用这个数组的某个元素,它总是--> ` <--。也许我错误地返回了向量?我评论了导致问题的行。
vector< TCHAR* > GetListOfModules( HANDLE proc )
{
HMODULE hMods[ 1024 ];
DWORD cbNeeded;
vector< TCHAR * > ListOfNames;
if( EnumProcessModules( proc, hMods, sizeof( hMods ), &cbNeeded ) )
{
for ( int i = 0; i < ( cbNeeded / sizeof( HMODULE ) ); i++ )
{
TCHAR szModName[ MAX_PATH ];
if ( GetModuleFileNameEx(proc, hMods[ i ], szModName,
sizeof( szModName ) / sizeof( TCHAR )) )
{
char * ptr = strrchr( szModName,'\\' );
if( ptr != NULL )
strcpy( szModName, ptr+1 );
ListOfNames.push_back( ( TCHAR * )szModName );
//cout << ListOfNames[ i ] << endl; // it works
}
}
}
return ListOfNames;
}
void main()
{
vector < TCHAR * > test;
test = GetListOfModules( GetHandleByName( "explorer.exe" ) );
//cout << test[1]; // it doesn't work
cin.get();
}