/
/
初始化
memset(&lv,
0
, sizeof(LV_ITEM));
lv.mask
=
LVIF_TEXT;
/
/
指定我们需要的是文本
lv.iSubItem
=
1
;
/
/
获取的列
lv.pszText
=
szpid;
/
/
指定储存结果的缓冲区
lv.cchTextMax
=
sizeof(szpid)
/
sizeof(szpid[
0
]);
/
/
指定缓存区大小
/
/
获取选择行
dwrowid
=
SendMessage(hlistprocess, LVM_GETNEXTITEM,
-
1
, LVNI_SELECTED);
if
(dwrowid
=
=
-
1
)
{
MessageBox(NULL, TEXT(
"请选择进程"
), TEXT(
"出错了"
), MB_OK);
return
;
}
/
/
获取PID
SendMessage(hlistprocess, LVM_GETITEMTEXT, dwrowid, (LPARAM)&lv);
/
/
解析PID
sscanf(szpid,
"%x"
, &pid);
HANDLE moudle
=
CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pid);
MODULEENTRY32 mi;
mi.dwSize
=
sizeof(MODULEENTRY32);
/
/
初始化
TCHAR
buffer
[
0x20
];
memset(
buffer
,
0
,
0x20
);
/
/
初始化
LV_ITEM lvitem;
memset(&lvitem,
0
, sizeof(LV_ITEM));
lvitem.mask
=
LVIF_TEXT;
lvitem.iItem
=
ListView_GetItemCount(hlistmodules);
BOOL
num
=
Module32First(moudle, &mi);
sprintf(
buffer
,
"%s"
,mi.szModule);
/
/
添加模块名到列表
lvitem.pszText
=
TEXT(
buffer
);
lvitem.iItem
=
0
;
lvitem.iSubItem
=
0
;
ListView_InsertItem(hlistmodules, &lvitem);
sprintf(
buffer
,
"%s"
,mi.szExePath);
/
/
添加模块路径到列表
lvitem.pszText
=
TEXT(
buffer
);
lvitem.iItem
=
0
;
lvitem.iSubItem
=
1
;
ListView_SetItem(hlistmodules, &lvitem);
CloseHandle(moudle);