* Main.prg if IsAppRunning("myUniqueApplicationIdentifier") messagebox("One instance of this app is already running") return endif * ... Function IsAppRunning Lparameters tcSemaphoreName Local hsem, lpszSemName #Define ERROR_ALREADY_EXISTS 183 Declare Integer GetLastError In win32API Declare Integer CreateSemaphore In WIN32API ; string @ lpSemaphoreAttributes, ; LONG lInitialCount, ; LONG lMaximumCount, ; string @ lpName hsem = CreateSemaphore(0,0,1,tcSemaphoreName) Return (hsem # 0 And GetLastError() == ERROR_ALREADY_EXISTS)Would do it for a single station.