ollydbg有一个“窗口工具”插件,有这样的功能,只要按住shift键移动鼠标到对话框的控件上,无论是灰化的还是有效的,都可以获得它的句柄,这应该怎样实现?我用VC++的depends查了它的输入函数,居然用的是WindowFromPoint,谁能举个详细的例子?谢谢。

解决方案 »

  1.   

    你用WindowFromPoint先获取父窗口的句柄hParent, 再调用一次hChild=ChildWindowFromPoint, 若结果为NULL, 则返回hParent, 否则返回hChild
      

  2.   

    问题是windowfrompoint不能获娶灰化的控件啊,鼠标在移动过程中怎么可能既得到父窗口句柄又得到子窗口句柄呢?
      

  3.   

    如果得不到灰化的控件的句柄, 至少可以先得到父窗口的句柄, 
    此时别立即返回该句柄, 再调用一次ChildWindowFromPoint看鼠标是否在灰化控件上,
    或直接调用EnumChildWindows, 在EnumChildProc中判断鼠标是否处在某个子控件上.