Если первый экземпляр свернут в панель задач, то выше сказанный способ вызывает Run-time error 5.
Кроме того, у меня на него зазвонил антивирь, которому показалось, будто вирус перехватил управление клавиатурой.
Я эту задачу решаю обыкновенно так:
- Код: Выделить всё
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Sub Form_Load()
Me.Tag = Me.Caption
If App.PrevInstance = True Then
Me.Caption = Me.Tag + "###" 'смена заголовка, чтобы не был как у предыдущего окна
'нахождение и показ предыдущего окна по его заголовку
i = FindWindow(vbNullString, Me.Tag)
Call ShowWindow(i, 9): Call SetForegroundWindow(i)
End 'закрытие второго экземпляра
End If
' (место для дальнейших команд)
' .......
End Sub
(Жаль, что ответил так поздно
)