mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
* removed unneeded Imports * renamed namespace to mRemoteNG * changed Logfile path to %USERPROFILE%\AppData\Local\mRemoteNG\mRemoteNG.log * fixed mRemoteNG.exe.config * added more ignores to .gitignore
69 lines
2.7 KiB
VB.net
69 lines
2.7 KiB
VB.net
Namespace My
|
|
' The following events are available for MyApplication:
|
|
'
|
|
' Startup: Raised when the application starts, before the startup form is created.
|
|
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
|
|
' UnhandledException: Raised if the application encounters an unhandled exception.
|
|
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
|
|
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
|
|
Partial Friend Class MyApplication
|
|
Public mutex As System.Threading.Mutex
|
|
|
|
Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
|
|
If My.Settings.SingleInstance Then
|
|
Dim mutexID As String = "mRemoteNG_SingleInstanceMutex"
|
|
|
|
mutex = New System.Threading.Mutex(False, mutexID)
|
|
|
|
If Not mutex.WaitOne(0, False) Then
|
|
Try
|
|
SwitchToCurrentInstance()
|
|
Catch ex As Exception
|
|
End Try
|
|
|
|
End
|
|
End If
|
|
|
|
GC.KeepAlive(mutex)
|
|
End If
|
|
End Sub
|
|
|
|
Private Function GetCurrentInstanceWindowHandle() As IntPtr
|
|
Dim hWnd As IntPtr = IntPtr.Zero
|
|
Dim curProc As Process = Process.GetCurrentProcess
|
|
|
|
For Each proc As Process In Process.GetProcessesByName(curProc.ProcessName)
|
|
If proc.Id <> curProc.Id And proc.MainModule.FileName = curProc.MainModule.FileName And proc.MainWindowHandle <> IntPtr.Zero Then
|
|
hWnd = proc.MainWindowHandle
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Return hWnd
|
|
End Function
|
|
|
|
Private Sub SwitchToCurrentInstance()
|
|
Dim hWnd As IntPtr = GetCurrentInstanceWindowHandle()
|
|
|
|
If hWnd <> IntPtr.Zero Then
|
|
'Restore window if minimized. Do not restore if already in
|
|
'normal or maximised window state, since we don't want to
|
|
'change the current state of the window.
|
|
If App.Native.IsIconic(hWnd) <> 0 Then
|
|
App.Native.ShowWindow(hWnd, App.Native.SW_RESTORE)
|
|
End If
|
|
|
|
App.Native.SetForegroundWindow(hWnd)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub MyApplication_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown
|
|
If mutex IsNot Nothing Then
|
|
mutex.Close()
|
|
End If
|
|
End Sub
|
|
End Class
|
|
|
|
End Namespace
|
|
|