如何在vba中用SetWindowPos将窗口置前显示?

在文章如何在vba中用api函数SetWindowPos调整窗口的大小 中介绍了用api函数调整窗口大小和位置的方法。

SetWindowPos函数除了可以调整窗口大小和位置,还可以设置窗口的Z序,可以将窗口置于Z序的顶端,也可以将窗户置于Z序的底部,还可以将窗口长期置顶。

以下代码是用api函数SetWindowPos将窗口强制置顶:

Public Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const SWP_NOZORDER = &H4
Sub QQ1722187970()
    Dim iHwnd
    iHwnd = Excel.Application.hwnd
    'HWND_TOPMOST 表示将窗口强制置顶,SWP_NOMOVE Or SWP_NOSIZE表示不改变原窗口的位置和大小。
    SetWindowPos iHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
End Sub
       

发表评论