因为DLL形参不能用STL和复杂的参数,但有时又必需用到。像以下DLL函数有没有什么好办法来修改?感谢各位高人指点,本人新手。
DLL里的函数
//取进程模块信息
BOOL GetProcessModular(DWORD ProcessId, std::vector<MODULEENTRY32> &sPm)
{
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId);//给指定进程拍个快照
if (hProcessSnap == INVALID_HANDLE_VALUE) { return FALSE; } //取快照失败
MODULEENTRY32 pe32; //定义结构变量
pe32.dwSize = sizeof(pe32); //设置它的大小
BOOL bMore = ::Module32First(hProcessSnap, &pe32); //取进程第一个模块
while (bMore)
{
sPm.push_back(pe32); //将模块信息加入迭代器
bMore = ::Module32Next(hProcessSnap, &pe32); //取进程下一个模块
}
::CloseHandle(hProcessSnap); //关闭对象
return TRUE;
}
EXE调用
std::vector<MODULEENTRY32> sPm;
GetProcessModular(ProcessId,sPm);
typedef std::vector<MODULEENTRY32> tVector;
for (tVector::iterator i = sPm.begin(); i != sPm.end(); ++i)
{
AddText(this, IDC_EDIT3, i->szModule);//输出函数
}