>*** Check to see if another Visual Pharmacy is running *** >IF !FirstInstance() > CLOSE ALL > QUIT > RETURN .F. >ENDIF >>
>FUNCTION FirstInstance > DECLARE INTEGER CreateMutex IN WIN32API INTEGER, INTEGER, STRING @ > DECLARE INTEGER CloseHandle IN WIN32API INTEGER > DECLARE INTEGER GetLastError IN WIN32API > DECLARE INTEGER SetProp IN WIN32API INTEGER, STRING @, INTEGER > DECLARE INTEGER GetProp IN WIN32API INTEGER, STRING @ > DECLARE INTEGER RemoveProp IN WIN32API INTEGER, STRING @ > DECLARE INTEGER IsIconic IN WIN32API INTEGER > DECLARE INTEGER SetForegroundWindow IN WIN32API INTEGER > DECLARE INTEGER GetWindow IN WIN32API INTEGER, INTEGER > DECLARE INTEGER ShowWindow IN WIN32API INTEGER, INTEGER > DECLARE INTEGER GetDesktopWindow IN WIN32API > DECLARE LONG FindWindow IN WIN32API LONG, STRING > DECLARE Sleep IN Win32API INTEGER dwMilliseconds > > #DEFINE SW_RESTORE 9 > #DEFINE ERROR_ALREADY_EXISTS 183 > #DEFINE GW_HWNDNEXT 2 > #DEFINE GW_CHILD 5 > LOCAL llRetVal, lcExeFlag, lnExeHwnd, lnHwnd > IF VERSION(2) = 0 > lcExeFlag = STRTRAN(_screen.caption, " ", "") + CHR(0) > lnExeHwnd = CreateMutex(0, 1, @lcExeFlag) > IF GetLastError() = ERROR_ALREADY_EXISTS > lnHwnd = GetWindow(GetDesktopWindow(), GW_CHILD) > DO WHILE lnHwnd > 0 > IF GetProp(lnHwnd, @lcExeFlag) = 1 > IF IsIconic(lnHwnd) > 0 > ShowWindow(lnHwnd,SW_RESTORE) > ENDIF > SetForegroundWindow(lnHwnd) > EXIT > ENDIF > lnHwnd = GetWindow(lnHwnd,GW_HWNDNEXT) > ENDDO > CloseHandle(lnExeHwnd) > llRetVal = .F. > ELSE > SetProp(FindWindow(0, _screen.caption), @lcExeFlag, 1) > llRetVal = .T. > ENDIF > ELSE > llRetVal = .T. > ENDIF > RETURN llRetval >ENDFUNC >>