先分享个程序,通过列表搜索出端口和线程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;

解决方案 »

  1.   

    #include <Tlhelp32.h> UINT GetProcessIdByName(LPCTSTR pszExeFile)
    {
        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"))在百度上搜到了,高兴