Это была проблема, которую я некоторое время не мог решить. Предотвращение второго экземпляра тривиально и имеет много методов, однако вернуть уже запущенный процесс - нет. Я хотел бы:
Я использую это на VB.NET и C#.





Эта ссылка может помочь:
http://www.ai.uga.edu/mc/SingleInstance.html
У него есть код для обнаружения другого запущенного экземпляра, но я не уверен, что вы можете с ним делать, когда у вас есть экземпляр.
Я нашел этот код полезным. Он выполняет обнаружение и дополнительную активацию существующего приложения:
Если вы используете .NET, это кажется более простым и понятным с использованием встроенных функций .NET:
Еженедельный исходный код 31 - WinForms для одного экземпляра и Microsoft.VisualBasic.dll
+1 - гораздо более чистый подход, который использует сборку Microsoft.VisualBasic вместо всего мусора Win32 API в принятом ответе. Также позволяет передавать аргументы командной строки обратно запущенному экземпляру - приятный бонус.
В Form_Load этот код работал.
If App.PrevInstance = True Then
MsgBox "Already running...."
Unload Me
Exit Sub
End If
Не могли бы вы добавить один или два тега, чтобы мы знали, каков контекст? Я предполагаю, что вы используете Microsoft Windows, но я не знаю, какой язык вы используете.