>*!* APPClass.Init >LPARAMETERS pScreenTitle, pMutex >#DEFINE ERROR_ALREADY_EXISTS 255 >DECLARE INTEGER CreateMutex IN win32api INTEGER, INTEGER, STRING @ >DECLARE INTEGER CloseHandle IN win32api INTEGER >DECLARE INTEGER GetLastError IN win32api >DECLARE INTEGER FindWindow IN Win32api STRING, STRING >DECLARE INTEGER IsIconic IN Win32api INTEGER >DECLARE ShowWindow IN Win32api INTEGER, INTEGER >DECLARE SetForegroundWindow IN Win32api INTEGER > >LOCAL lMutex, nWinHandle,lnError >lMutex = IIF(pcount()<2, pScreenTitle, pMutex) >THIS.nExeHwnd = CreateMutex(0, 1, @lMutex) >lnError=GetLastError() >IF lnError = ERROR_ALREADY_EXISTS > CloseHandle(THIS.nExeHwnd) > MESSAGEBOX("ERROR"+CHR(13)+"This application is allready running."+CHR(13)+ "Shut down...", ; > MB_OK+MB_ICONSTOP, pScreenTitle) > MB_OK+MB_ICONSTOP, pScreenTitle) > nWinHandle = FindWindow(NULL, pScreenTitle) > IF nWinHandle # 0 > IF IsIconic(nWinHandle) = 1 > ShowWindow(nWinHandle,4) > ENDIF > SetForegroundWindow(nWinHandle) > ENDIF > RETURN .F. >ENDIF >>