Monday, September 15, 2014

WINDOWS CE SINGLE INSTANCE VB.NET


Imports System.Threading
Imports System.Runtime.InteropServices
Imports System.IO


Public Class Program
    Private Const NATIVE_ERROR_ALREADY_EXISTS As Int32 = 183

    Public Shared Sub Main(ByVal args As String())
        Try
            If IsInstanceRunning() Then
                ' MessageBox.Show("Price Checker Application Already Running!")

                Return

            Else


                '... the normal application start code ...
                Application.Run(New FORMNAME)
                Exit Sub
            End If
          
        Catch
        End Try
    End Sub


    Public Shared Function IsInstanceRunning() As Boolean
        Dim boolResult As Boolean = False
        Dim hMutex As IntPtr = CreateMutex(IntPtr.Zero, True, "ConnControl")
        If hMutex = IntPtr.Zero Then
        End If
        If Marshal.GetLastWin32Error() = NATIVE_ERROR_ALREADY_EXISTS Then
            boolResult = True
        End If
        ReleaseMutex(hMutex)
        Return boolResult
    End Function

    _
    Public Shared Function SetCursor(ByVal hCursor As IntPtr) As IntPtr
    End Function

    _
    Public Shared Function CreateMutex(ByVal lpMutexAttributes As IntPtr, ByVal InitialOwner As Boolean, ByVal MutexName As String) As IntPtr
    End Function

    _
    Public Shared Function ReleaseMutex(ByVal hMutex As IntPtr) As Boolean
    End Function


End Class