请问AfxMessageBox()到底调用了那个API函数,又如何拦截它,我拦截了MessageBoxA,MessageBoxW,MessageBoxExA,MessageBoxExW四个函数,都不行。
=========谁能告知,我在开帖送300分!!!!!!!!!!

解决方案 »

  1.   

    MFC不是有源代码吗???查查源代码呗...
      

  2.   

    请问::MessageBox()如何取得MessageBoxA()的地址,是通过查找user32.dll的输入节还是直接调用GetProcAddress()取得,或者还有其它方法!
      

  3.   

    直接调用GetProcAddress()就能得到地址。
      

  4.   

    应该是调
     ::MessageBox(.............);拦截的方法是override
    CWinApp的DoMessageBox()函数.
      

  5.   

    谢谢 Zark(金陵五月)
    你说的方法我已试过,对::MessageBox(.............)无用,只对AfxMessageBox()有效。请问可有它方????
      

  6.   

    for romanticist(让我拥抱你入梦):
    请问GetMessage()何用??
      

  7.   

    To : thb(thb) 
    你建一个全局函数 MessageBox(...); 
    不知可否实现对::MessageBox(.............)
    的重载.
      

  8.   

    WIN32 API函数是无法正常拦截的,它没有提供入口。如果你非要拦::MessageBox()可以在你的stdAfx.h的第一行加:
    #define ::MessageBox MyMessageBox然后自已写一个和MessageBox()返回值及参数一样的函数MyMessageBox()xxx MyMessageBox(xxxxx)
    {
     // 拦截
     return MessageBox();
    }
      

  9.   

    设置断点跟踪AfxMessageBox()可知是调用API 函数MessageBox.
    API拦截比较复杂,如果要拦截本地进程空间的API比较容易,如果要拦截所有进程空间的API则比较难。看看《Windows核心编程》或《Windows95系统编程大奥秘》里面有详细介绍及实现源码。
      

  10.   

    to: Zark(金陵五月) 谢谢!!
    但 #define ::MessageBox MyMessageBox 编译通不过.