0
我們正在全局鉤住TextOut(),ExtTextOut()和DrawText()方法。VC++:如何鉤住/解除特定單個線程
即 hhook = SetWindowsHookEx(WH_CBT,function_address,module_handle,0);
但我們只想鉤住/解除特定的EXE。誰能告訴我如何檢查所有現有線程和獲得所需的EXE和鉤/只脫鉤。
請提供幫助。
謝謝
我們正在全局鉤住TextOut(),ExtTextOut()和DrawText()方法。VC++:如何鉤住/解除特定單個線程
即 hhook = SetWindowsHookEx(WH_CBT,function_address,module_handle,0);
但我們只想鉤住/解除特定的EXE。誰能告訴我如何檢查所有現有線程和獲得所需的EXE和鉤/只脫鉤。
請提供幫助。
謝謝
您可以使用PSAPI專門EnumProcesses
你會從SDK需要#include "psapi.h"
並添加PSAPI.lib
到連接器的輸入枚舉過程。
例:
DWORD aiPID[1000], iCb=1000;
DWORD iCbneeded = 0;
if (!EnumProcesses(aiPID, iCb, &iCbneeded)) return(E_FAIL);
int iNumProc=iCbneeded/sizeof(DWORD);
for(int i=0; i < iNumProc; i++)
{
// First, get a handle to the process
HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, FALSE, aiPID[i]);
if (!hProc) continue;
TCHAR szName[MAX_PATH] = _T("<unknown>");
HINSTANCE hMod = NULL;
if (EnumProcessModules(hProc, &hMod, sizeof(hMod), &iCbneeded))
{
GetModuleFileNameEx(hProc, hMod, (LPTSTR)szName, MAX_PATH);
}
CloseHandle(hProc);
}
編輯:對不起 - 這只是給你的進程列表...得到線程每個看到ListProcessThreads傳入PID每個枚舉進程。
我需要掛接這些方法爲好。有人可以發佈關於如何做到這些鉤子的代碼? – Jeremy 2010-08-07 01:48:34