我发现有人能通过GetSystemMenu、GetMenuItemCount和RemoveMenu来关闭窗口的关闭按钮(X)
hMenu = GetSystemMenu(Me.hwnd, 0)
nCount = GetMenuItemCount(hMenu)
Call RemoveMenu(hMenu, nCount - 1, MF_REMOVE Or MF_BYPOSITION)我想找到关闭按钮的句柄,应该怎么做?貌似FindWindow和GetSubMenu做不到啊.我的目的是想枚举所有的窗口,
用EnumWindows来列举所有句柄之后,
通过判断句柄窗口是否存在关闭按钮来排除一些非正常的句柄。当然如果有更好的办法请推荐一个

解决方案 »

  1.   

    关闭按钮应该没有句柄吧?
    你找到窗口后,用API关闭该窗口不就行了。
      

  2.   

    根本就不用去获得这个句柄,你只需要获得窗体的句柄,然后使用SendMessage或PostMessage向其发送对应消息即可,比如:最小化消息、最大化消息、关闭消息
      

  3.   

    都误解我的意思了,使用EnumWindows函数后,得到很多句柄。我想排除掉一些。剩下的就是桌面上的窗口了
      

  4.   

    做过之类化窗口程序就应该比较清楚,窗口上的最大化、最小化、关闭按钮是没有句柄的。
    如果想排除多余的窗口,可以参考一下 WinCE 中的任务栏代码,过程很详细,虽然没有x86
    架构下的任务栏那么全,但还是很值得参考的。这个过程主要是综合多个条件判断的,如:
    窗口是否显示、窗口样式、窗口扩展样式等等约10多个条件综合判断来过滤的。