Как активировать окно приложения, если оно уже запущено. - VB
Формулировка задачи:
Пример: Outlook Express.
Если не запущен, то запускается.
Если уже запущен, то его окно просто активируется, т.е.
1) Если свернуто, то показывается в том виде как было (normal либо max)
2) Фокус устанавливается на него.
Чтоб исключить дубликаты:
Хорошо, это работает.
А вот с восстановлением окна, если запущено.
Ну, в духе
Но этот код не совсем для этого, т.е.
1) если окно прикрыто другими, то оно наверх вылазит
НО
2) если на панели задач - там и остается
3) будучи запущенным щелчком по ярлыку, фокус в окно предыдущего экземпляра приложения не передается, а возвращается как это сказать, в папку откуда щелкнули.
Как бы этот код подправить по простому?
Есть конечно вариант послать WM_COPYDATA "предыдущему" окну, и выполнить
Но без этого никак нельзя?
Если не запущен, то запускается.
Если уже запущен, то его окно просто активируется, т.е.
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д