forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=15)
-   -   Как не дать приложению запуститься более 1 раза? (http://forum.boolean.name/showthread.php?t=7811)

HAMANN 10.02.2009 16:00

Как не дать приложению запуститься более 1 раза?
 
Доброго времени суток! Скажите, пожалуйста, как не дать приложению запускаться более 1- го раза?:)

H@NON 10.02.2009 16:14

Ответ: Как не дать приложению запуститься более 1 раза?
 
создай файл в который будешь записывать значение переменной. Если переменная приняла некоторое значение, то приложение при запуске будет убиваться.

ABTOMAT 10.02.2009 16:23

Ответ: Как не дать приложению запуститься более 1 раза?
 
Какова цель если не секрет?

Tadeus 10.02.2009 16:40

Ответ: Как не дать приложению запуститься более 1 раза?
 
Надёжнее ИМХО записать в реестр

SBJoker 10.02.2009 16:41

Ответ: Как не дать приложению запуститься более 1 раза?
 
Можно поискать окно с требуемым (своим) заголовком..ещё в многие среды разработки позволяют задать приложению флаг отвечающий за только однократный запуск.

ABTOMAT 10.02.2009 16:58

Ответ: Как не дать приложению запуститься более 1 раза?
 
По ходу Джокер предложил наиболее приемлемый вариант (с окнами)

jimon 10.02.2009 17:08

Ответ: Как не дать приложению запуститься более 1 раза?
 
в линуксе опера для этого создаёт файл

H@NON 10.02.2009 17:37

Ответ: Как не дать приложению запуститься более 1 раза?
 
Цитата:

Сообщение от Tadeus (Сообщение 97594)
Надёжнее ИМХО записать в реестр

надежнее для чего? автор помойму не говорил что это от злоумышленников делается ;)
От просто юзверя можно сделать и файлом и запрятать его куда-нить в "мои документы"

HAMANN 10.02.2009 18:14

Ответ: Как не дать приложению запуститься более 1 раза?
 
Цитата:

Сообщение от H@NON (Сообщение 97609)
надежнее для чего? автор помойму не говорил что это от злоумышленников делается ;)

делается это именно от них) так что надо что нибудь надежнее.
Джокер
Можешь расписать свой вариант поподробнее? ;)

HolyDel 10.02.2009 18:26

Ответ: Как не дать приложению запуститься более 1 раза?
 
C++
Код:

if(FindWindow(0,"mycaption")!=0)exit(0);
blitz
Код:

if FindWindow(0,"mycaptiom")<>0 then end
функция вин-апи ее надо внести через decls файл. лежит в user32.dll

Venom 10.02.2009 19:07

Ответ: Как не дать приложению запуститься более 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


HAMANN 10.02.2009 19:32

Ответ: Как не дать приложению запуститься более 1 раза?
 
кул!! все работает. спасибо

jimon 10.02.2009 20:03

Ответ: Как не дать приложению запуститься более 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.
так что будте осторожны :)


Часовой пояс GMT +4, время: 03:49.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot