SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,hDLLInstance,0);
是挂钩所有进程的所有线程
SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,NULL,GetCurrentThreadId());
本进程的一个线程
如何挂钩当前进程的所有线程?
是挂钩所有进程的所有线程
SetWindowsHookEx(WH_CALLWNDPROC,CallWndProc,NULL,GetCurrentThreadId());
本进程的一个线程
如何挂钩当前进程的所有线程?
解决方案 »
- 如果在我的程序里调用静态库中创建的对话框
- MFC中出现了这种错误怎么办啊——syntax error in option "subsystem:windows/incremental:yes?
- RAW socket中为什么TTL值不成功
- 急问:关于焦点的一个奇怪问题
- 各位高手,谁知道那里有winIO的程序
- _bstr_t在.net 2003中不能使用的问题
- ActiveX控件中的文档序列化与普通MDI程序中的有什么不同么?
- 200分求一个com的例子,急急急.......
- 怎样在安全模式下加载驱动服务?
- MFC 自定义的工具栏图标被菜单栏遮住了一半怎么解决
- 在哪里设置可执行文件的描述信息
- 求一个对ListBox进行随机排序的算法!
DWORD WINAPI GetMainThreadID(DWORD dwOwnerPID)
{
HANDLE hThreadSnap = INVALID_HANDLE_VALUE;
THREADENTRY32 te32;
DWORD dwThreadID = 0;
hThreadSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);
if (hThreadSnap == INVALID_HANDLE_VALUE)
{
return 0;
} te32.dwSize = sizeof(THREADENTRY32);
if (!Thread32First(hThreadSnap, &te32))
{
CloseHandle(hThreadSnap);
} do
{
if (te32.th32OwnerProcessID == dwOwnerPID)
{
//返回找到的第一个线程, 不知道这个线程是否一定是主线程(WinMain所在线程)
dwThreadID = te32.th32ThreadID;
break;
}
}
while (Thread32Next(hThreadSnap, &te32)); CloseHandle(hThreadSnap);
return(dwThreadID);
}
DWORD dwThreadId = GetMainThreadID(GetCurrentProcessId());
SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, hDLLInstance, dwThreadId);
[in] Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread.
invoke GetModuleHandle,NULL
invoke SetWindowsHookEx,WH_CALLWNDPROC,offset CallWndProc,eax,0
这个HOOK 在一个DLL里,我只想对自己的进程进行HOOK。