If AppAlreadyRunning() Messagebox('Another instance is already running.') ... Function AppAlreadyRunning 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 lpszSemName = "AnyStringUniqueToYourApp" hsem = CreateSemaphore(0,0,1,lpszSemName) Return (hsem # 0 And GetLastError() == ERROR_ALREADY_EXISTS)PS:FindWindow() works with ClassNames too.