Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запуск экземпляра

2.0K
31 мая 2003 года
alexora
22 / / 19.05.2003
Мне надо сделать, что бі можно только один раз запускать приложение

Вот начало моей фун.

int WINAPI WinMain (HINSTANCE hThisInst,HINSTANCE hPrevInst,
LPSTR lpszArgs,int nWinMode)
{
if (hPrevInst) return FALSE;
...
}


Правильно я делаю ?
А то оно все равно разрешает запускать больше одного приложения
2.7K
01 июня 2003 года
Test_System
18 / / 19.05.2003
Цитата:
Originally posted by alexora
Мне надо сделать, что бі можно только один раз запускать приложение

Вот начало моей фун.

int WINAPI WinMain (HINSTANCE hThisInst,HINSTANCE hPrevInst,
LPSTR lpszArgs,int nWinMode)
{
if (hPrevInst) return FALSE;
...
}


Правильно я делаю ?
А то оно все равно разрешает запускать больше одного приложения


Воспользуйся событиями.
OpenEvent - позволяет получить описатель именнованого объекта. Если ноль, то приложение не запущенно.
Тогда создаешь чере CreateEvent событие.
Соответственно при втором запуске, у тебя уже существует объект и ты получишь описатель... В этом случае делаешь возврат.

2.0K
01 июня 2003 года
alexora
22 / / 19.05.2003
А разве CreateEvent - единственный способ так сделать. Помню что где то встречал реализацию этого. Может есть еще какие то идеи ?
М я не могу вьехать никак почему

if (!hPredInstance) return FALSE не проходит

:)
2.7K
02 июня 2003 года
Test_System
18 / / 19.05.2003
Цитата:
Originally posted by alexora
А разве CreateEvent - единственный способ так сделать. Помню что где то встречал реализацию этого. Может есть еще какие то идеи ?
М я не могу вьехать никак почему

if (!hPredInstance) return FALSE не проходит

:)


CreateEvent не единственный способ... Так можно сделать через любой именнованый объект ядра.
Например через файл проецируемый в память...
if (!hPredInstance) return FALSE
что же касается этой строчки...
вот код:
char tmp[100];
int i=sprintf(tmp,"%p",hPrevInstance);
tmp[i+1]=0;
MessageBox(NULL,tmp,"Test",MB_OK);
Посмотри указатель, у меня он постоянно нулевой.

426
02 июня 2003 года
Krivonos
112 / / 20.01.2000
Что по этому поводу пишет MSDN:
hPrevInstance
[in] Handle to the previous instance of the application. This parameter is always NULL.
If you need to detect whether another instance already exists, create a uniquely named mutex using the CreateMutex function. CreateMutex will succeed even if the mutex already exists, but the GetLastError function will return ERROR_ALREADY_EXISTS. This indicates that another instance of your application exists, because it created the mutex first.
319
02 июня 2003 года
xelos
577 / / 27.02.2003
Через FindWindow можно еще сделать - при запуске искать окно с твоим именем, правда не очень корректный способ, потому что имена могут совпадать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог