程序的主form里,有2个button可以分别使subform1 & subform2 以vbmodal显示,在程序已经被打开并且其中的subform1也被show的情况下,仍然打开该程序,此时只需将刚才的画面还原到桌面就可以,并且subform1在主form前.
  subform1的窗口句柄怎么捕捉呢?有没有api函数可以取得指定进程中最上层窗口吗?

解决方案 »

  1.   

    GetParent VB声明 
    Declare Function GetParent Lib "user32" Alias "GetParent" (ByVal hwnd As Long) As Long 
    说明 
    判断指定窗口的父窗口 
    返回值 
    Long,父窗口的句柄。如窗口没有父,或遇到错误,则返回零。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hwnd Long,欲测试的窗口的句柄 
      

  2.   

    zyl910(910:分儿,我又来了!),有 API Text Viewer 之类的工具麻烦给一个行吗?不全,有资料 MSDN 往回返也没查到
    ------------------------------------------------
    一般情况下可以用ApiViewer2004
    http://www.activevb.de/rubriken/apiviewer/index-apiviewereng.html如果也没有的话
    根据C语言头文件自己写声明
      

  3.   

    我想得到的是最后被打开窗口的句柄
    ------------------------没有程序纪录最后打开的窗口
    不可能有这样的API程序是你写的
    你肯定知道最后被打开窗口是谁
      

  4.   

    有什么api可以枚举指定进程的所有窗口呢?谢谢.
      

  5.   

    EnumWindows VB声明 
    Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) 
    说明 
    枚举窗口列表中的所有父窗口(顶级和被所有窗口) 
    返回值 
    Long,非零表示成功,零表示失败 
    参数表 
    参数 类型及说明 
    lpEnumFunc Long,指向为每个子窗口都调用的一个函数的指针。用AddressOf运算符获得函数在标准模式下的地址 
    lParam Long,在枚举期间,传递给dwcbkd32.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的 
    注解 
    我的理解——在随vb5同时提供的api32.txt文件中,找不到这个函数
    -----------------------
    Z顺序我只知道用SetWindowPos设,不知道用什么API来读。