Как активировать окно приложения, если оно уже запущено. - VB

Узнай цену своей работы

Формулировка задачи:

Пример: Outlook Express.
Если не запущен, то запускается.
Если уже запущен, то его окно просто активируется, т.е.
1) Если свернуто, то показывается в том виде как было (normal либо max)
2) Фокус устанавливается на него.
Чтоб исключить дубликаты:

Хорошо, это работает.
А вот с восстановлением окна, если запущено.
Ну, в духе

Но этот код не совсем для этого, т.е.
1) если окно прикрыто другими, то оно наверх вылазит
НО
2) если на панели задач - там и остается
3) будучи запущенным щелчком по ярлыку, фокус в окно предыдущего экземпляра приложения не передается, а возвращается как это сказать, в папку откуда щелкнули.
Как бы этот код подправить по простому?
Есть конечно вариант послать WM_COPYDATA "предыдущему" окну, и выполнить

ТАМ

код

Но без этого никак нельзя?

Решение задачи: «Как активировать окно приложения, если оно уже запущено.»

textual
Листинг программы
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function IsIconic Lib "user32.dll" (ByVal hwnd As Long) As Long

If App.PrevInstance Then
    Dim hwndTarget As Long 'hwnd окна PrevInstance
    hwndTarget = FindWindow(vbNullString, WINDOWTITLE_APP)
    If hwndTarget <> 0 Then
      If IsIconic(hwndTarget) Then ShowWindow hwndTarget, SW_RESTORE
      SetForegroundWindow hwndTarget
    End If
    Exit Sub
  End If
...
  Form1.Show
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5
Похожие ответы