我对某个进程A进行FindwindowA和FindwindowW进行HOOK..很奇怪的,进程A中能HOOK到::Findwindow("aaa",NULL);  但是改成CWnd::Findwindow("aaa",NULL);就HOOK不到了~~~一直搞不懂~~
 
 求高手解释????

解决方案 »

  1.   

    警告楼主,你有严重的知识断层。Findwindow在user32.dll里
    CWnd::Findwindow就难说了,可能是在mfc42.dll里,也可能是在mfc80.dll里
    看用什么编译器生成的了.
      

  2.   

    楼上的说法不太敢认同。按理说,该不会单独写一个FindWindow函数吧?MFC只是封装,最终应该还是调用了user32.dll的相关API才对呀
      

  3.   

    但是CWnd::FindWindow最终应该还是会调用FindWindow的啊,不过也不一定,也许调用的是FindWindowEx也不一定。
      

  4.   

    我以为他是要HOOK CWnd::Findwindow()这个成员函数。
    一下没转过弯来
      

  5.   

    发现MFC的源码如下,我的猜测应该没错:_AFXWIN_INLINE CWnd* PASCAL CWnd::FindWindow(LPCTSTR lpszClassName, LPCTSTR lpszWindowName)
    { return CWnd::FromHandle(::FindWindow(lpszClassName, lpszWindowName)); }
      

  6.   

    这个没必要去查MFC的源代码,MFC对API全是封装,最终还是会调用API的,不可能重写一个的。
      

  7.   

    HOOK 到了::FindowWindow  
    而这个CWnd::FindWindow应该也HOOK到了才对的啊~~
    奇怪中...