Запретить повторный запуск приложения
Добавлено: 20 Сентябрь 2010, 15:06
Пытаюсь запретить повторный запуск приложения, т.к. пользователи любят свернуть приложение, не найти его, и открыть новое, в результате чего возникают проблемы.
Нашел код, который прилагаю ниже. Он действительно запрещает повторный запуск, но хотелось бы, чтобы он не делал это молча, а выдавал сообщение "Программа уже запущена" и только потом завершался. Подскажите, пожалуйста, как это можно сделать.
Нашел код, который прилагаю ниже. Он действительно запрещает повторный запуск, но хотелось бы, чтобы он не делал это молча, а выдавал сообщение "Программа уже запущена" и только потом завершался. Подскажите, пожалуйста, как это можно сделать.
Код: Выделить всё
#! -------------------------------------------------------------------------- #!
#EXTENSION(OneInstace,'Limits application to one start.'),APPLICATION
#BOXED('OneInstance')
#DISPLAY('Freeware for clarion community')
#PROMPT('Window Name:',@S20),%ApplicName,REQ
#ENDBOXED
#AT(%GlobalData)
Include('cwsynchm.inc'),once
Limiter &IMutex,auto, thread
Result Signed,auto
hwndApp UNSIGNED
szTitle CSTRING( '%ApplicName')
ProgramStarted Byte
#ENDAT
#AT(%GlobalMap)
MODULE('WINAPI')
FindWindow(<*CSTRING lpClassName>, |
*CSTRING lpWindowName), |
UNSIGNED,PASCAL,RAW,NAME('FindWindowA')
IsIconic(UNSIGNED),BOOL,PASCAL
ShowWindow(UNSIGNED, SIGNED nCmdShow),BOOL,PASCAL,PROC
SetForegroundWindow(UNSIGNED),BOOL,PASCAL,PROC
End
#ENDAT
#AT(%ProgramEnd)
If ProgramStarted
Limiter.Release()
Limiter.Kill()
End
#ENDAT
#AT(%ProgramSetup)
Limiter &= NewMutex('thisApp')
If Limiter &= NULL
Message('Error: Mutex cannot be created')
Return
Else
Result = Limiter.TryWait(50)
If Result <= WAIT:Ok
ProgramStarted = True
Elsif Result = WAIT:TIMEOUT
hwndApp = FindWindow(, szTitle)
IF hwndApp
IF IsIconic(hwndApp)
ShowWindow(hwndApp, 1)
ELSE
SetForegroundWindow(hwndApp)
END
END
Return
Else
Message('Wait failed')
Return
End
End
#ENDAT
#!-------------------------------------------------------------------------------