Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Wlk
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 214
Завершенные тесты: 4
1

MFC. Запрет запуска второй копии программы

13.03.2014, 23:19. Просмотров 673. Ответов 2
Метки нет (Все метки)

Здравстуйте.

В главе 3 книги Дж. Рихтера есть простая реализация примера для запрета запуска второй копии программы.
Пытаюсь ее приспособить для своего проекта в MFC.

Добавляю в функцию BOOL CMainApp::InitInstance() код создания именованого мьютекса и проверку на GetLastError() == ERROR_ALREADY_EXISTS.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
..............
 
 
HANDLE hM = CreateMutex(NULL, FALSE,
        _T("{JLKJLKJL-HHKJHKJ-JKK}"));
    
 
    if (GetLastError() == ERROR_ALREADY_EXISTS) 
    {
        AfxMessageBox(_T("Alredy exists"));
        CloseHandle(hM);
        PostQuitMessage(0);
    }
    
    CloseHandle(hM);    
 
 
 
 
        CMainDlg dlg;   
     ...........
Все равно могу запускать более 1 копии. GetLastError() выдает S_OK. В чем может быть проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 23:19
Ответы с готовыми решениями:

MFC-MDI - запрет перетаскивание документов
Привет. Мне необходимо в MDI-интерфейсе запретить возможность перетаскивать...

Правильная архитектура программы на MFC
Здорова! Как правильно создавать программы на mfc чтобы они не подвисали?...

Поменять стиль MFC-программы
Как это можно сделать в уже созданном проекте? Спасибо.

MFC: остановка программы в нужном месте
Есть ли команда в mfc для завершения программы в нужном месте? Например при...

нужен совет в подправке программы (приложение MFC)
Вот код файла реализации. Как сделать так, чтобы не было "промаргивания" экрана...

2
xTr1m
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
14.03.2014, 13:42 2
а
C++
1
CloseHandle(hM);
точно есть в коде. а то получается, что мьютекс создается и тут же закрывается
1
Wlk
90 / 90 / 48
Регистрация: 07.12.2011
Сообщений: 214
Завершенные тесты: 4
14.03.2014, 14:22  [ТС] 3
Да, точно. Спасибо.
Решил добавлением определения виртуальной функции и переносом туда CloseHandle(hM);

C++
1
2
3
4
5
int CMainApp::ExitInstance()
{
    CloseHandle(hM);
    return CWinApp::ExitInstance();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2014, 14:22

GUI зависает при выполнении MFC программы
У меня есть небольшая программка с интерфейсом на мфц, но когда я нажимаю на...

Сложно ли научится создавать WIN32 программы с MFC?
Я могу создавать консольные программы на С++ и хотел бы знать сложно ли...

Реализация запуска программы от имени администратора
Требуется реализовать запуск программы от имени администратора по умолчанию,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru