在线等待,来者有分,如何用一个VB程序得到当前桌面打开的窗口,并打开最下面一个窗口、
好比现在打开有Word、Excel、写字板这样的先后次序,Word在最下面 ,现一VB程序运行、单击一按钮、就弹出一消息框得出总窗口数、并将Word显示在最前面
谢谢

解决方案 »

  1.   

    利用API函数枚举函数EnumWindows和GetWindowLong 获得窗体信息,在另用SetWindowPos 设置窗体顺序!EnumWindows AddressOf EnumWindowsProc, 0&
                          回调函数
    回调函数要自己写的!
      

  2.   

    给你一个不用 EnumWindows 的,用EnumWindows 得到所有的窗口,你也可以用下面的方法。
    Getnextwindow hwnd,prev  循环
    和 
    Getnextwindow hwnd,Next 循环
    这样来得到所有的窗体,俄且可以根据窗体的text不同来作出不同的响应,而不用对所有窗口执行相同的操作。具体的实现自己来吧
      

  3.   

    其实办法有很多enum窗体的方法!
    最后你可以用setgroundwindow来使你的窗体置前了。
      

  4.   

    老大们,老师们
    请你们放点代码好吗这种API我用得太少了、用不来
    可以加分,谢谢能发邮件也很好
    [email protected]
      

  5.   

    你的36分 我拿定了
    我已经给你发邮件了
    请尽快和[email protected] 联系
      

  6.   

    这个马马虎虎还可以:Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
    Private Const GW_HWNDLAST = 1&
    Private Const GW_HWNDPREV = 3&
    Private Const WS_APPWND = &H80000
    Private Declare Function GetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Const GWL_STYLE = (-16)
    Private Declare Function IsWindowVisible Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function IsIconic Lib "user32" (ByVal hwnd As Long) As Long
    Private Type RECT
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
    Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As LongPrivate Sub Command1_Click()
      Dim lhwnd As Long, rct As RECT
      lhwnd = GetWindow(Me.hwnd, GW_HWNDLAST)
      Do Until (lhwnd = 0&) Or _
                (((GetWindowLongA(lhwnd, GWL_STYLE) And _
                    WS_APPWND) = WS_APPWND) And _
                (IsWindowVisible(lhwnd) <> 0&) And _
                (IsIconic(lhwnd) = 0&) And _
                (GetWindowRect(lhwnd, rct) <> 0&) And _
                ((rct.Right - rct.Left) > 1&) And _
                ((rct.Bottom - rct.Top) > 1&))
        lhwnd = GetWindow(lhwnd, GW_HWNDPREV)
      Loop
      SetForegroundWindow lhwnd
    End Sub