class AbcEdit:public CEdit
{
public:
LRESULT AbcEdit::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
return CEdit::DefWindowProc(message, wParam, lParam);
}
};这样重载一个CEdit的DefWindowProc可以成功,但是这样的重载似乎没有办法获得发送消息方的Hwnd,怎么才能在重载DefWindowProc的时候也获得到发送方的Hwnd呢?

解决方案 »

  1.   

    比如说写一个test.exe程序,程序的界面上放一个AbcEdit的编辑框,AbcEdit是从CEdit继承来的并重载了DefWindowProc
    用Spy4Win来获得AbcEdit编辑框的内容,Spy4Win会发送一个SendMessage(AbcEdit.hwnd,WM_GETTEXT,100,&char)这样的消息给AbcEdit(这个是我瞎猜的-_-#,不过AbcEdit::DefWindowProc的确可以拦截到WM_GETTEXT)
    在AbcEdit::DefWindowProc中怎么获得发送方Spy4Win的Hwnd或PID信息呢?或者需要在其他地方获取?
      

  2.   

    我感觉没办法,消息结构MSG参数HWND是接收方的句柄,除非在消息参数里自己传递ID或者句柄,但标准的Windows消息也没有这么做
      

  3.   

    系统消息当然不包含发送者的hwnd,除非自定义消息将sendhwnd作为消息参数