Добавлено: 01 Июнь 2004, 17:57
Привет Всем !
Помнится в Clare при компиляции 16-разрядного.приложения при повторном запуске одного и того же exe-шника собранной программы автоматически определялось окно уже ранее запущенной и восстанавливался фокус. В 32-х этого нет и приходится такие вещи делать вручную.
Я использую ф-ю API FindWindow
Однако если MDI, то описание окна-то изменяется, например: 'Моя программа [Окно такое-то]'
и FindWindow его уже не находит да и SUB не используешь
Можно, конечно создать в TEMP-овской Windows директории какой нибудь файл с эксклюзивным доступом и при старте его тоже пытаться открыть эксклюзивно, если ErrorCode(), то уже наверное приложение запущено....
однако, наверное, способ не самый оптимальный...
Хотелось бы узнать мнение Уважаемого Clalist-сообщества, кто как решает этот вопрос
Спасибо
Сергей
Сочи
(Добавление)
Hi,
Через mutex-ы. См. ABCFree
#EXTENSION(MiscOneApplicationInstance,'Misc: One application instance (only let app run once per system)'),APPLICATION
#!---------------------------------------------------------------------------------------------------------------------------------------------------------
#BOXED('One Application Instance')
#DISPLAY('Only one instance of your application will')
#DISPLAY('be allowed to run on a particular system')
И в 16 р можно запустить неск. экземпляров, если на NT ядре.
Nick Tsigouro <nick@arsis.ru>
Добрый день.
Я также делаю это через
Проблем вроде не замечается, в том числе и при GPF.
С уважением, Марина
Написал: ClaList(2)
Помнится в Clare при компиляции 16-разрядного.приложения при повторном запуске одного и того же exe-шника собранной программы автоматически определялось окно уже ранее запущенной и восстанавливался фокус. В 32-х этого нет и приходится такие вещи делать вручную.
Я использую ф-ю API FindWindow
Код: Выделить всё
FrameTitle = 'Моя программа'
OtherPgmHwnd=FindWindow( ,FrameTitle)
IF OtherPgmHwnd THEN !окно отыскано
...
...
ля-ля-я и выход
...
End !if
Однако если MDI, то описание окна-то изменяется, например: 'Моя программа [Окно такое-то]'
и FindWindow его уже не находит да и SUB не используешь
Можно, конечно создать в TEMP-овской Windows директории какой нибудь файл с эксклюзивным доступом и при старте его тоже пытаться открыть эксклюзивно, если ErrorCode(), то уже наверное приложение запущено....
однако, наверное, способ не самый оптимальный...
Хотелось бы узнать мнение Уважаемого Clalist-сообщества, кто как решает этот вопрос
Спасибо
Сергей
Сочи
(Добавление)
Hi,
Через mutex-ы. См. ABCFree
#EXTENSION(MiscOneApplicationInstance,'Misc: One application instance (only let app run once per system)'),APPLICATION
#!---------------------------------------------------------------------------------------------------------------------------------------------------------
#BOXED('One Application Instance')
#DISPLAY('Only one instance of your application will')
#DISPLAY('be allowed to run on a particular system')
Помнится в Clare при компиляции 16-разрядного.приложения при повторном запуске одного и того же exe-шника собранной программы автоматически определялось окно уже ранее запущенной и восстанавливался фокус.
И в 16 р можно запустить неск. экземпляров, если на NT ядре.
Nick Tsigouro <nick@arsis.ru>
Добрый день.
Я также делаю это через
Код: Выделить всё
CreateMutex(LONG lpMutexAttributes, ! ! pointer to security attributes
BYTE bInitialOwner, ! ! flag for initial ownership
*CSTRING lpName ! ! pointer to mutex-object name
),LONG,PASCAL,RAW,NAME('CreateMutexA')
С уважением, Марина
Написал: ClaList(2)