设置一个timer,然后疯狂的SetForegroundWindow hwnd只能这样,不过没有这种必要,否则其他得不到焦点程序怎么办?

解决方案 »

  1.   

    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Const SWP_NOZORDER = &H4
    Private Const SWP_NOREDRAW = &H8
    Private Const SWP_NOACTIVATE = &H10
    Private Const SWP_FRAMECHANGED = &H20
    Private Const SWP_SHOWWINDOW = &H40
    Private Const SWP_NOCOPYBITS = &H80
    Private Const SWP_NOOWNERZORDER = &H200
    Private Const SWP_DRAWFRAME = SWP_FRAMECHANGED
    Private Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
    Private Const HWND_TOP = 0
    Private Const HWND_BOTTOM = 1
    Private Const HWND_TOPMOST = -1
    Private Const HWND_NOTOPMOST = -2
    Private 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
    Private mbOnTop As Boolean
    Private Property Let OnTop (Setting As Boolean)
    if Setting Then
    SetWindowPos hwnd, -1, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    Else
    SetWindowPos hwnd, -2, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
    End If
    mbOnTop = Setting
    End Property
     
    Private Property Get OnTop() As Boolean
    'Return the private variable set in Property Let
    OnTop = mbOnTop
    End Property
    调用 OnTop=True 即可让窗口 Always On Top。