rt,做一个关于窗口审计的程序:审计用户在某个时刻桌面上所打开的窗口标题,窗口对应的进程名等信息。当然,为了便于用户理解和查看,诸如系统窗口,隐藏窗口等窗口都需要过滤掉,尽量只留一些用户窗口信息。程序功能现已基本达到,但是有一点问题,当用户点击某菜单,弹出菜单窗口时,也将被审计程序审计到,实际上这个信息是没有什么意义的,而且此时得到的窗口标题为空,也不利于用户理解,这种窗口信息也需要过滤掉。我是通过得窗口的style对窗口进行过滤的,目前过滤条件是WS_VISIBLE,为了过滤掉菜单窗口信息,我试过了很多方法,发现只有添加过滤条件WS_POPUP,才能到达目的,但是如果添加了这个条件,那么正常的弹出式对话框也将被过滤掉(因为它们也具有WS_POPUP样式)。所以请教一下,如果才能过滤掉菜单窗口,且保证通常的弹出式窗口不被过滤掉。当然不局限于通过窗口style进行过滤了,只要能够达到目的,其它方法亦可,谢谢了!!!

解决方案 »

  1.   

    get the windows's class name
      

  2.   

    能详细些么?我指的菜单窗口不是指菜单栏窗口,而是鼠标点击菜单某项后弹出的子菜单窗口,请问这样的窗口的class name是什么呢?用spy++看不到,因为是弹出式窗口...
      

  3.   

    不一定为空的,有些菜单菜单窗口为空,有些就不为空,比如我所遇到的Access 2000的子菜单窗口的标题就是对应的主菜单名,比如"工具"子菜单的标题就是"工具",当然也有一些就是空。但是即使都为空,也不能以此为判断啊,因为有些窗体标题也为空,比如flashget最小化后,只有一个进度透明小窗口悬浮在桌面上,它的标题也为空,但是总不能把它也过滤掉吧,它也是用户打开的一个应用程序的窗口啊!