Определение второй инстанси

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Определение второй инстанси

Сообщение Alexander N. Samarin » 19.03.2005 (Сб) 20:20

Определять, запущена ли вторая инстансь, можно попробовать следующими способами:
1) Взять список процессов и найти "свой"
2) App.PrevInstance
3) Проверка записи в реестр/файл

У кого будут какие мысли?
:idea:
На это не смотрите! Это не подпись!!!!!!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 19.03.2005 (Сб) 20:22

2.
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 19.03.2005 (Сб) 20:22

Непонял :roll:
На это не смотрите! Это не подпись!!!!!!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 19.03.2005 (Сб) 20:25

if App.PrevInstance then
end
ednif
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 19.03.2005 (Сб) 20:26

_Мика_ писал(а):if App.PrevInstance then
end
ednif

Это не работает, если программы лежат в разных папках
На это не смотрите! Это не подпись!!!!!!

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 19.03.2005 (Сб) 20:27

тогда первое
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.03.2005 (Сб) 20:44

Нет, тогда мьютекс (Mutex). Или майлслот. Или именованный пайп. Или что-нибудь аналогичное.
Lasciate ogni speranza, voi ch'entrate.

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 20.03.2005 (Вс) 13:08

alibek писал(а):Нет, тогда мьютекс (Mutex). Или майлслот. Или именованный пайп. Или что-нибудь аналогичное.

А в переводе :roll: :D
На это не смотрите! Это не подпись!!!!!!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.03.2005 (Вс) 13:19

Синхронизация вообще:
http://msdn.microsoft.com/library/defau ... zation.asp
Мьютексы в частности:
http://msdn.microsoft.com/library/defau ... emutex.asp

Мэйлслоты:
http://msdn.microsoft.com/library/defau ... lslots.asp

Пайпы вообще:
http://msdn.microsoft.com/library/defau ... /pipes.asp
Создание именованного канала (named pipe) в частности:
http://msdn.microsoft.com/library/defau ... edpipe.asp

Насчет чего-нить еще: MSDN, раздел "Interprocess Communication".

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 20.03.2005 (Вс) 16:06

Все по-английски, ничего не понятно. Дайте, кто может, что-нибудь совсем разжеванное :cry: :oops:
На это не смотрите! Это не подпись!!!!!!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 20.03.2005 (Вс) 17:09

Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 20.03.2005 (Вс) 17:15

Используй мутексы...
В апи-гайде есть прямо замечательный пример как раз на сабж топика. См. в категории "Mutex".

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 20.03.2005 (Вс) 17:17

Ну ладно, выложу уж код, упреждая вопросы "А что такое апи-гайд?" и "Где его скачать?"...

Код: Выделить всё
'Code by Adam Verwijs
Const ERROR_ALREADY_EXISTS = 183&
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (lpMutexAttributes As Any, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Declare Function ReleaseMutex Lib "kernel32" (ByVal hMutex As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Sub Form_Load()
    Dim hMutex As Long
    'Try to create a new Mutex
    hMutex = CreateMutex(ByVal 0&, 1, App.Title)
    'Did the mutex already exist?
    If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
        'Clean up
        ReleaseMutex hMutex
        CloseHandle hMutex
        'More than one instance detected
        MsgBox "More than one instance"
        End
    Else
        'form load code
    End If
End Sub

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 20.03.2005 (Вс) 19:41

А если прогу просто-напросто убить через Таск Мэнэджер, то она больше не запустится, если она проверяет инстанту через Mutex... ваши предложения....
On Fatal Error Resume Next

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.03.2005 (Вс) 19:50

Если процесс убивается (неважно, каким способом), то мьютекс тоже убивается.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 20.03.2005 (Вс) 20:12

Иными словами, мутекс привязан к конкретному процессу? Можно ли узнать, к какому процессу привязан мутекс?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.03.2005 (Вс) 20:32

Amed, Windows конечно знает, кто с кем связан. А вот как эту информацию получить... Это посмотреть надо.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 20.03.2005 (Вс) 21:15

alibek
Естественно, Windows знает. Было бы смешно, если б не знал ;)

Представляю себе действия Windows:
1) вот, надо закрыть процесс
2) ой, у нас мутексы есть созданные... интересно, есть ли мутекс у этого процесса
3) ну ладно. выгрузим на всякий случай все :lol:
4) *аплодисменты*

:lol:

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 23.03.2005 (Ср) 15:43

Смешно!!! :D
А по теме :?:
На это не смотрите! Это не подпись!!!!!!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 92

    TopList