,只需要调用SetWindowLongPtr函数,改变窗口的内婵中的窗口过程地址,指向一个新的(你自己的) WndProc。Platform SDK文档说,应用程虿能为另一个进程创建的窗口建立子类。这并不完全正确。为另一个进程的窗口建立子类的关键问题与进程地址空间的边界有关。 当调用下面所示的SetWindowsLongPtr函数,建立一个窗口的子类时,你告诉系统,发送到或者显示在hwnd设定的窗口中的所有消息都应该送往MySubclassProc,而不是送往口的正常窗口过程: 进程A中代码: EXE file: LRESUlT WndProc(HWND hend,UNIT uMsg,...){.....} USER32.DLL file LONG DispatchMessage(CONST MSG*msg) { LONG lRet; WNDPROC lpfnWndProc= (WNDPROC)GetWindowLongPtr(msg,hwnd,GWLP_WNDPROC ); lRet=lpfnWndProc(msg.hwnd,msg.message,msg.wParam,mag. lParam); return lRet; } 进程B中: EXE file void Somefunc(void) { HWND hwnd=Findwindow("class A",NULL); SetWindowLongPtr(hwnd,GWLP_WNDPROC,MySubclassProc); } USER32.DLL fil页码:[1] [2] [3] [4] [5] [6] [7] 第2页、共7页 |