Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 5
  • 277
Komentarze (2)
Jest to możliwe, ale w ograniczonym zakresie. Rozumiem, że okno powinno być również "ponad" innymi oknami systemu Windows, a nie tylko okna Excela i innych formularzy?
Skomentował : @ TRENER ALTKOM AKADEMII ,28.03.2014

Odpowiedź (1)

  • 10

Wstaw to w module:

Private Const SWP_NOSIZE = &H1

Private Const SWP_NOMOVE = &H2

Private Const HWND_TOPMOST = -1 

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _

    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 

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 uFlags As Long) As Long 

Public Sub AlwaysOnTop(caption As String) 

    Dim ret As Long

    Dim hWnd As Long   

    hWnd = FindWindow(vbNullString, caption)

    ret = SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE)   

End Sub

A następnie w userfomie wywołaj AlwaysOnTop:

Private Sub UserForm_Initialize()   

AlwaysOnTop Me.caption

End Sub.

Marcin_Zajac
  • Odpowiedział
  • @ Marcin_Zajac | 10.05.2014
    • 2
    • 4
    • 3
Komentarze
Dzięki, właśnie w tą stronę chciałem iść. Coś podobnego wstawiałem w C# żeby okno konsoli było zawsze na wierzchu, ale nie wiedziałem jak tutaj to wstawić.
Skomentował : @ Szymon_Siemiaszko ,03.06.2014
  • 18
  • 7
  • 30