Страница: 1 | 2 | 3 | 4 |
Вопрос: Запрет на повторный запуск приложения!
Добавлено: 27.02.06 01:40
Автор вопроса: Albert | ICQ: 334-970-670
Ответы
Всего ответов: 57
Номер ответа: 31
Автор ответа:
ANDREY
Вопросов: 0
Ответов: 33
Профиль | | #31
Добавлено: 28.02.06 23:01
Мне то же не понятно, зачем извращаться со всякими окошками, если Мьютексы это системный, рекомендуемый мелкомягкими способ. Кроме того, мьютексы всетаки жрут горащздо меньше системных ресурсов, чем (пусть даже и скрытые) окна.
Номер ответа: 32
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #32
Добавлено: 01.03.06 08:05
Код вызывает ошибку и создает видимость того, что программу второй раз
не запустишь, вроде и переименовал, а тут ошибка и после ошибки вторая
копия запущена!
Так что вы братцы чего то упустили
Номер ответа: 33
Автор ответа:
ANDREY
Вопросов: 0
Ответов: 33
Профиль | | #33
Добавлено: 01.03.06 10:03
Попробуй заменить 0 на GENERIC_ALL.
Номер ответа: 34
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #34
Добавлено: 01.03.06 11:17
Можно и по окошку, только никаких тупых дополнительных окон. Просто поиск окна, если находится - то, скажем, GetWindowLong и GWL_USERDATA (чтоб убедиться в том что это действительно то).
Гемора меньше и создавать ничего не надо.
Номер ответа: 35
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #35
Добавлено: 02.03.06 00:58
Гы... А можно ваЩе по-тупому сделать... Когда первая копия проги ранится, чё-то там пишет в реестр (или создаёт файлик). Когда выгружается - удаляет. А когда вторая копия грузится - проверяет - ага - есть ветка (файлик) - выгружаемся нафиг, показываем мессаг (опционально)
Номер ответа: 36
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #36
Добавлено: 02.03.06 01:01
PS. А вы тут обсуждаете разные мютексы, светофоры, семафоры.....
Номер ответа: 37
Автор ответа:
ANDREY
Вопросов: 0
Ответов: 33
Профиль | | #37
Добавлено: 02.03.06 10:10
А потом, после первой ошибки, когда наша прога неожиданно завершиться, или после первого внезапного отключения электричества, наша прога вообще перестанет запускаться
Номер ответа: 38
Автор ответа:
HOOLIGAN
Вопросов: 0
Ответов: 1066
Профиль | | #38
Добавлено: 02.03.06 11:27
Поиск окна по FindWindow накладывает некоторые ограничения: его нужно делать до создания окна, иначе нарвешься на своё окно и запуститься будет невозможно.
И в то же время FindWindow до создания окна исключает применение GetWindowLong.
GetWindowLong подразумевает получение и сравнение данных для двух окон, но одного из них ещё нет по описанной выше причине, соответственно GetWindowLong не пройдёт
Номер ответа: 39
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #39
Добавлено: 02.03.06 11:33
Тут два варианта (минимум)
1. Определять какому именно процессу принадлежит окно. Если нашему - ноль внимания.
2. Изначально задать окну какой-нибудь возмутительный Caption, после проверки - менять.
Подойдет тот же App.Title.
GetWindowLong подразумевает получение UserData из какого-нить окна и сравнение с некой заданной величиной. Запуск лучше организовать через Sub Main.
Ну а так, конечно, я не сторонник метода с FindWindow
Номер ответа: 40
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #40
Добавлено: 02.03.06 17:27
У метода окошечка есть одно большое преимущество. Он сразу дает возможность передавать в старую копию программы что-нибудь. Командную строку, например. Просто SendMessage.
С GetWindowLong по-моему больше возни. Тут уже просто FindWindow не покатит, недо что-нибудь вроде GetWindow или EnumWindows юзать, и каждому проверять юзердату. Хотя меньше системных ресурсов.
PS. Я это сообщение набрал 3 раза. И незадолго перед тем, как я его собирался отпостить, опера вылетала... И все впустую. :\ Блокнот рулит.
Номер ответа: 41
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #41
Добавлено: 02.03.06 18:31
Я имел ввиду поменять App.Title
Номер ответа: 42
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #42
Добавлено: 02.03.06 21:07
Почему никто не хочет юзать mutex'ы??? Давно проверенный неглючащий способ! И вдобавок, легкий для программирования!
Номер ответа: 43
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #43
Добавлено: 02.03.06 23:03
незнакомые функции - пугают
Номер ответа: 44
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #44
Добавлено: 02.03.06 23:50
капец, ответ №1 был самый лучший... чихать на разные имена
Номер ответа: 45
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #45
Добавлено: 03.03.06 14:48
Почему никто не хочет юзать mutex'ы
Ну зачем так категорично? Ты видишь тут толпу протестующих? Просто люди ищут разные решения.
капец, ответ №1 был самый лучший...
Конечно, если не читать последующие