代码:
HWND m_hWnd=FindWindow("#32770","windows 任务管理器"); if (m_hWnd) { HWND hwnd=GetWindow(m_hWnd,GW_CHILD); while(hwnd!=NULL) { HWND hwnd_s1=GetWindow(hwnd,GW_CHILD); while(hwnd_s1!=NULL) { TCHAR wndtext[MAX_PATH]={0}; GetWindowText(hwnd_s1, wndtext,MAX_PATH); if(lstrcmp(wndtext,"进程")==0) { //已经找到了任务管理器的进程列表框,直接搞不行,远程申请内存再搞 DWORD PID; GetWindowThreadProcessId(m_hWnd, &PID); HANDLE hProcess=OpenProcess(PROCESS_ALL_ACCESS,false,PID); if(!hProcess) return false; LVITEM lvitem, *plvitem; char ItemBuf[512],*pItem; plvitem=(LVITEM*)VirtualAllocEx(hProcess, NULL, sizeof(LVITEM), MEM_COMMIT, PAGE_READWRITE); pItem=(char*)VirtualAllocEx(hProcess, NULL,512, MEM_COMMIT, PAGE_READWRITE); if ((!plvitem)||(!pItem)) return false; lvitem.cchTextMax=512; lvitem.iSubItem=0; lvitem.pszText=pItem; WriteProcessMemory(hProcess, plvitem, &lvitem, sizeof(LVITEM), NULL); for (int i=0;i<=ListView_GetItemCount(hwnd_s1);i++) { SendMessage(hwnd_s1, LVM_GETITEMTEXT, (WPARAM)i,(LPARAM)plvitem); ReadProcessMemory(hProcess, pItem, ItemBuf, 512, NULL); if (strstr(ItemBuf,"win32对话框")>0) { ListView_DeleteItem(hwnd_s1,i); } } } hwnd_s1=GetWindow(hwnd_s1,GW_HWNDNEXT); } hwnd=GetWindow(hwnd,GW_HWNDNEXT); } }
微点讨厌,不知道哪个API微点过滤了。优点是简单。