![]() |
|
Модераторы: Akina |
![]()
|
|
| Vano-K |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2003 Где: Украина, Днепропе тровск Репутация: нет Всего: нет |
Доброе утро, добрый день, добрый вечер - кому как.
Мне нужна помощь(это всем надо). Так вот продолжаю, мне нужна помощь. У меня есть откомпелированный ехе фаил. Он будет запускатся автоматически(я пропишу в автозапуск), и будетсидеть в трее, но скрыта. Но мне необходимо чтобы: вдруг какойто осёл захочит запустить ещё один раз этот же ехе фаил, и когда он запускает прога находила что: запушен один и тот - же фаил и например выскакивал эрор, или самоуничтожалась прога, или что-то ещё, но так чтобы это "что то ещё" я мог устанавливать сам. Навсякий случай: у меня ХР З.Ы. Огромное спасибо. |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Ты можешь когда программа запускается писать в application's registry в определенное место допустим 1, а при выходе писать туда 0. Когда ты запускаешь второй раз туже программу, то в registry соответственно будет стоят 1 (потому, что другая первая запущенная еще не востановила значение) и ты на это делаешь что хочешь. Это один из способов, который можно попробовать, но с ним могут быть проблемы. Как писать в реестр написано снизу. Там есть пару функций. Как записывать я знаю, а как читать у меня не было примера - сам посмотри. Вот так записывается что-то в реестр:
Второй способ - это не придумывать тут ничего, что может работать, а может и нет во всех виндах, а просто записать тот же нолик или единичку, соответственно, в файл сообственный типа .ini. Успехов! Навсякий случай: у меня 98
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Vano-K |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2003 Где: Украина, Днепропе тровск Репутация: нет Всего: нет |
Что-то уж больно сложно, говорили что это намного проще..............
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Ничего сложного тут нет. Вот например тебе исходник программки которая запускается только один раз. По идее должна быть какая-то API которая говорит о том что копия программы уже была запущена, но мне она не известна. В этом исходнике зарыта только одна неприятность - что произойдет если прога повиснет и тебе придется перезагрузить компер? Можно на этот случай написать маленькую прогу, которая также будет сидеть в автозапуске и обнулять твое значение при запуске винды до запуска твоей проги. Таким образом программа будет запускаться даже при неправильном ее закрытии после перезагрузки винды.
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Vano-K |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 4.4.2003 Где: Украина, Днепропе тровск Репутация: нет Всего: нет |
Огромное спасидо(этот пример мне подойдёт), я нашол пример тоже (там можно сново и сново запускать ехе, а в техтбохе добовляется строка), но твой тоже неплох, Огромнейшое спасибо
|
|||
|
||||
| Guest_Farkhod |
|
|||
|
Unregistered |
Можно и по проще
if app.Previnstance=true then end else ..... end if |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Вот этого человек в принципе и хотел
спасибо за такой простенький вариант! А вот вопрос на всех виндах это проходит? Человек то под XP работает. Я знаю только следующее: Если посмотреть на то, что происходит в С++, но вот там прогой управляет функция WinMain(). Параметры у функции бывают разные, но вот что сказано в умной книге (Крис Паппас и Уильям Мюррей написали): "в ранних версиях Windows (в плоть до 3.x) параметр hPreInst позволял определить, были ли запущены другие копии приложения. В Windows 95/98/NT для каждого запущенного модуля выделяется отдельное адресное пространство, в связи с чем параметр hPreInst всегда устанавливается равным NULL". Слова Previnstance и hPreInst очень похожи... Но тот факт, что я думаю, что у Guest_Farkhod его вариант работал говорит о том, что можно и так решить поставленную задачу потому, что я что-то сомневаюсь, что у Guest_Farkhod "Windows в плоть до 3.x" -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |