先分享个程序,通过列表搜索出端口和线程ID映射。请教如何建立线程名如QQ.EXE与QQ进程ID的映射
m_list.DeleteAllItems(); DWORD dwSize = 0, dwRes = 0;
PMIB_TCPTABLE_OWNER_PID psTcpTable = NULL; dwRes = ::GetExtendedTcpTable(
NULL, &dwSize,
TRUE, AF_INET,
TCP_TABLE_OWNER_PID_ALL, 0); if (dwRes != ERROR_INSUFFICIENT_BUFFER)
return; psTcpTable = (PMIB_TCPTABLE_OWNER_PID)new BYTE[dwSize]; dwRes = ::GetExtendedTcpTable(
(PVOID)psTcpTable, &dwSize,
TRUE, AF_INET,
TCP_TABLE_OWNER_PID_ALL, 0); if (dwRes == NO_ERROR)
{
for (DWORD i = 0; i < psTcpTable->dwNumEntries; i++)
{
CString msg;
msg.Format("TCP: dest port %d, sour port %d, pid %d",
psTcpTable->table[i].dwRemotePort,
psTcpTable->table[i].dwLocalPort,
psTcpTable->table[i].dwOwningPid);
m_list.InsertItem(0, msg);
UpdateData(0);
}
} delete psTcpTable;
m_list.DeleteAllItems(); DWORD dwSize = 0, dwRes = 0;
PMIB_TCPTABLE_OWNER_PID psTcpTable = NULL; dwRes = ::GetExtendedTcpTable(
NULL, &dwSize,
TRUE, AF_INET,
TCP_TABLE_OWNER_PID_ALL, 0); if (dwRes != ERROR_INSUFFICIENT_BUFFER)
return; psTcpTable = (PMIB_TCPTABLE_OWNER_PID)new BYTE[dwSize]; dwRes = ::GetExtendedTcpTable(
(PVOID)psTcpTable, &dwSize,
TRUE, AF_INET,
TCP_TABLE_OWNER_PID_ALL, 0); if (dwRes == NO_ERROR)
{
for (DWORD i = 0; i < psTcpTable->dwNumEntries; i++)
{
CString msg;
msg.Format("TCP: dest port %d, sour port %d, pid %d",
psTcpTable->table[i].dwRemotePort,
psTcpTable->table[i].dwLocalPort,
psTcpTable->table[i].dwOwningPid);
m_list.InsertItem(0, msg);
UpdateData(0);
}
} delete psTcpTable;
{
UINT nProcessID = 0;
PROCESSENTRY32 pe = {sizeof(PROCESSENTRY32)}; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0);
if (hSnapshot != INVALID_HANDLE_VALUE)
{
if (Process32First(hSnapshot, &pe))
{
while (Process32Next(hSnapshot, &pe))
{
if (lstrcmpi(pszExeFile, pe.szExeFile) == 0)
{
nProcessID = pe.th32ProcessID;
break;
}
}
} CloseHandle(hSnapshot);
} return nProcessID;
} 使用例子:UINT id = GetProcessIdByName(_T("ctfom.exe"))在百度上搜到了,高兴