Запрет запуска второго экземпляра приложения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

Запрет запуска второго экземпляра приложения

Сообщение kuguar » 07.06.2006 (Ср) 21:09

Ребят, если кому попадалась статья на просторах родного VBStreet, с раскрытием вопроса (Запрет запуска второго экземпляра приложения) - подскажите - где лежит, а то второй час ползаю и все безуспешно, А ведь помню - где-то видел :shock:

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.06.2006 (Ср) 21:12

Код: Выделить всё
If App.PrevInstance Then End
Изображение

kuguar
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 30.04.2005 (Сб) 10:23

Сообщение kuguar » 07.06.2006 (Ср) 21:17

Спасибо, уважаемый Tyomitch!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 07.06.2006 (Ср) 21:34

const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 08.06.2006 (Чт) 6:50

tyomitch писал(а):
Код: Выделить всё
If App.PrevInstance Then End
tyomitch, ну зачем давать заведомо неправильный ответ? Ведь этот способ не сработает, если ЕХЕ запускать из разных мест... :shock:
А я все практикую лечение травами...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 08.06.2006 (Чт) 7:26

Дык может, именно это и требуется? ;-)
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 08.06.2006 (Чт) 7:30

По отмазкам? :wink:
А я все практикую лечение травами...

.:[nnn]:.
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 23.05.2006 (Вт) 14:22

Сообщение .:[nnn]:. » 09.06.2006 (Пт) 11:51

Можно ещё Mutex использовать...

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
hMutex = CreateMutex(ByVal 0&, 1, App.Title)
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
ReleaseMutex hMutex
CloseHandle hMutex
MsgBox "приложение уже запущено"
End
End If
End Sub
Юзер всегда найдет где нажать, чтоб потом криво работало.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2006 (Пт) 12:04

Угу. А ещё окно, атом, семафор, трубу, и чёрта в ступе.
Полная свобода для креатива.
Изображение

kostyanet
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 10.06.2006 (Сб) 10:36

Сообщение kostyanet » 10.06.2006 (Сб) 11:55

App.PrevInstance локально работает, но не удается активировать уже запущенное приложение.

То есть, чтобы вместо запуска еще одной копии, активировалось окно уже запущенной.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.06.2006 (Сб) 12:03

тогда в поиск.
Изображение

kostyanet
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 10.06.2006 (Сб) 10:36

Сообщение kostyanet » 10.06.2006 (Сб) 12:14

Блин, я по-русски насчет ключевых слов не уверен, но попробовал "активировать окно" - еще две темы кроме этой, и никакого отношения к вопросу.

То есть, я же подразумеваю что AppActivate не работает в таких условиях. Равно как и АПИшные вызовы. Хотя, может я не все проверял.

Идея такая что первое приложение должно само себя активировать по сообщению второго, которое подыхает тут же.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 10.06.2006 (Сб) 13:23

kostyanet писал(а):Блин, я по-русски насчет ключевых слов не уверен, но попробовал "активировать окно" - еще две темы кроме этой, и никакого отношения к вопросу.

То есть, я же подразумеваю что AppActivate не работает в таких условиях. Равно как и АПИшные вызовы. Хотя, может я не все проверял.

Видимо, не всё.
http://bbs.vbstreets.ru/viewtopic.php?t=17316
Изображение


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 13

    TopList  
cron