СообЧа > База Знаний > Программирование > Visual Basic > Графика и Мультимедиа

Вопрос

Проблема такая. Ставлю я свою программу генерировать то, что мне надо, а тем временем переключаюсь в другую программу. Как мне сделать, чтобы после окончания работы программа обратила на себя мое внимание помигиванием на нижней панельке (так же как это делает IE, когда страничку загрузит) ?

Или пусть она вылезает поверх всех окон.

Ответ

В форму:

Private Sub Form_Load()
    Call SetFormPosition(Me.hwnd, True)
End Sub

В модуль:

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
Public Const HWND_NOTOPMOST = -2
Public Const HWND_TOPMOST = -1
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1

Public Sub SetFormPosition(frmHandl As Long, TopPosition As Boolean)
    If TopPosition Then
        SetWindowPos frmHandl, HWND_TOPMOST, 0, 0, 0, 0, _
            SWP_NOACTIVATE Or SWP_NOSIZE Or SWP_NOMOVE
    Else
        SetWindowPos frmHandl, HWND_NOTOPMOST, 0, 0, 0, 0, _
            SWP_NOSIZE Or SWP_NOMOVE
    End If
End Sub

И будет надежно поверх всех окон.

Stranger757

Declare Function FlashWindow Lib "user32" (ByVal hwnd As Long, ByVal bInvert As Long) As Long

Private Sub Command1_Click() ' Окно мигает 5 раз для привлечения внимания
    Dim c As Integer, retval As Long
    For c = 1 To 10 ' 5 раз цвет активного окна и 5 раз — неактивного
        retval = FlashWindow(Form1.hwnd, 1) ' переключаем вид окна
        Sleep 500 ' пауза через каждые 500 миллисекуд (1/2 секунды)
    Next c
    retval = FlashWindow(Form1.hwnd, 0) ' окно должно выглядить активным
End Sub


Viaceslavas Kaleda



Copyright © 2000-2004 Сообщество Чайников
Контактная информация