|
FAQ Туториалы и часто задаваемые вопросы |
10.02.2009, 16:00
|
#1
|
Нуждающийся
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений (для 24 пользователей)
|
Как не дать приложению запуститься более 1 раза?
Доброго времени суток! Скажите, пожалуйста, как не дать приложению запускаться более 1- го раза?
|
(Offline)
|
|
10.02.2009, 16:14
|
#2
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
создай файл в который будешь записывать значение переменной. Если переменная приняла некоторое значение, то приложение при запуске будет убиваться.
|
(Offline)
|
|
10.02.2009, 16:23
|
#3
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
Какова цель если не секрет?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
10.02.2009, 16:40
|
#4
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
Надёжнее ИМХО записать в реестр
|
(Offline)
|
|
10.02.2009, 16:41
|
#5
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
Можно поискать окно с требуемым (своим) заголовком..ещё в многие среды разработки позволяют задать приложению флаг отвечающий за только однократный запуск.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.02.2009, 16:58
|
#6
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
По ходу Джокер предложил наиболее приемлемый вариант (с окнами)
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
10.02.2009, 17:08
|
#7
|
|
Ответ: Как не дать приложению запуститься более 1 раза?
в линуксе опера для этого создаёт файл
|
|
|
10.02.2009, 17:37
|
#8
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
Сообщение от Tadeus
Надёжнее ИМХО записать в реестр
|
надежнее для чего? автор помойму не говорил что это от злоумышленников делается
От просто юзверя можно сделать и файлом и запрятать его куда-нить в "мои документы"
|
(Offline)
|
|
10.02.2009, 18:14
|
#9
|
Нуждающийся
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений (для 24 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
Сообщение от H@NON
надежнее для чего? автор помойму не говорил что это от злоумышленников делается
|
делается это именно от них) так что надо что нибудь надежнее.
Джокер
Можешь расписать свой вариант поподробнее?
|
(Offline)
|
|
10.02.2009, 18:26
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
C++
if(FindWindow(0,"mycaption")!=0)exit(0);
blitz
if FindWindow(0,"mycaptiom")<>0 then end
функция вин-апи ее надо внести через decls файл. лежит в user32.dll
Последний раз редактировалось HolyDel, 10.02.2009 в 21:52.
|
(Offline)
|
|
Эти 11 пользователя(ей) сказали Спасибо HolyDel за это полезное сообщение:
|
ABTOMAT (10.02.2009), Артем Валерьевич (04.02.2011), Blender (01.02.2010), Dream (11.02.2009), Egor Rezenov (19.03.2011), HAMANN (10.02.2009), Harter (10.02.2009), impersonalis (10.02.2009), newman (10.02.2009), SBJoker (10.02.2009), tormoz (10.02.2009)
|
10.02.2009, 19:07
|
#11
|
Оператор ЭВМ
Регистрация: 25.02.2008
Сообщений: 24
Написано 8 полезных сообщений (для 30 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
Жжоте, для этого в windows существуют mutex обьекты или по-русски "семафоры".
файл "kernel32.decls" (в папке блица "userlibs"):
.lib "kernel32.dll"
CreateMutexA%(security%, initial%, name$)
CloseHandle(handle%)
GetLastError%()
Пример:
;Открываем семафор
Local mutex%
mutex = CreateMutexA(0, 0, "the one")
;Если возникла ошибка 183 - такой семафор уже существует
If (GetLastError() = 183) Then
;значит это второй экземпляр программы - выходим
End
EndIf
Graphics3D(800, 600, 32, 2)
SetBuffer(BackBuffer())
CreateCamera()
Repeat
RenderWorld()
Flip()
Until (KeyDown(1))
;закрываем семафор
CloseHandle(mutex)
End
|
(Offline)
|
|
Эти 8 пользователя(ей) сказали Спасибо Venom за это полезное сообщение:
|
|
10.02.2009, 19:32
|
#12
|
Нуждающийся
Регистрация: 05.08.2008
Сообщений: 73
Написано 11 полезных сообщений (для 24 пользователей)
|
Ответ: Как не дать приложению запуститься более 1 раза?
кул!! все работает. спасибо
|
(Offline)
|
|
10.02.2009, 20:03
|
#13
|
|
Ответ: Как не дать приложению запуститься более 1 раза?
вот что пишет MSDN по-поводу CreateMutex
If you are using a named mutex to limit your application to a single instance, a malicious user can create this mutex before you do and prevent your application from starting. To prevent this situation, create a randomly named mutex and store the name so that it can only be obtained by an authorized user. Alternatively, you can use a file for this purpose. To limit your application to one instance per user, create a locked file in the user's profile directory.
|
так что будте осторожны
|
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:50.
|