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

Ваш аккаунт

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

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

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

Перезапуск программы

472
10 августа 2005 года
Vovka
139 / / 10.02.2005
Необходимо перезапустить программу, но в ней есть Мьютекс для предотвращения запуска второй копии:
BOOL InitInstance()
{
CWnd *PrevCWnd = CWnd::FindWindow(NULL, "MyProgram");
if(PrevCWnd != NULL){
::MessageBox(NULL,"Программа уже запущена!"," Отказ в запуске...",MB_ICONSTOP);
return FALSE;
}

...

return FALSE;
}

Как быть?
299
10 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Vovka
Необходимо перезапустить программу, но в ней есть Мьютекс для предотвращения запуска второй копии:
BOOL InitInstance()
{
CWnd *PrevCWnd = CWnd::FindWindow(NULL, "MyProgram");
if(PrevCWnd != NULL){
::MessageBox(NULL,"Программа уже запущена!"," Отказ в запуске...",MB_ICONSTOP);
return FALSE;
}

...

return FALSE;
}

Как быть?



Первое что пришло на ум, создать еще одну программу. Из главной будет запускаться дополнительная программа, соответсвенно завершаться текущая. И эта дополнительная программа должна будет завново запускать первую прогу и завершать себя.

472
10 августа 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by 3D Bob
Первое что пришло на ум, создать еще одну программу. Из главной будет запускаться дополнительная программа, соответсвенно завершаться текущая. И эта дополнительная программа должна будет завново запускать первую прогу и завершать себя.


А на всех ли Windows этот прием будет работать?
Я где-то читал, что в какой-то версии Windows при завершении программы автоматом закрываются порожденные ею потоки...

488
10 августа 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Vovka
Необходимо перезапустить программу, но в ней есть Мьютекс для предотвращения запуска второй копии:
BOOL InitInstance()
{
CWnd *PrevCWnd = CWnd::FindWindow(NULL, "MyProgram");
if(PrevCWnd != NULL){
::MessageBox(NULL,"Программа уже запущена!"," Отказ в запуске...",MB_ICONSTOP);
return FALSE;
}

...

return FALSE;
}

Как быть?

А где здесь mutex?
Можешь запустить прогу с каким-то параметром. Если есть параметр, тогда посылает первой копии SYSCOMMAND WM_CLOSE.

472
10 августа 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by Mоngооsе
Можешь запустить прогу с каким-то параметром. Если есть параметр, тогда посылает первой копии SYSCOMMAND WM_CLOSE.


А как мне понять где какая копия? Ведь я могу прогу перезапускать несколько раз!

299
10 августа 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Vovka
А как мне понять где какая копия? Ведь я могу прогу перезапускать несколько раз!


А зачем?

472
10 августа 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by 3D Bob
А зачем?


По запуску прога собирается по кусочкам из DLL. Пользователь может сам настраивать что ему нужно и какие пункты меню где должны быть (начальство так хочет). Перезапуск помоему проще всего...

488
10 августа 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Vovka
По запуску прога собирается по кусочкам из DLL. Пользователь может сам настраивать что ему нужно и какие пункты меню где должны быть (начальство так хочет). Перезапуск помоему проще всего...

Перед перезапуском измени заголовок убиваемой программы. Напр.
CWnd *PrevCWnd = CWnd::FindWindow(NULL, "MyProgramOld");
И тогда и параметр не нужен будет.

472
10 августа 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by Mоngооsе
Перед перезапуском измени заголовок убиваемой программы. Напр.
CWnd *PrevCWnd = CWnd::FindWindow(NULL, "MyProgramOld");
И тогда и параметр не нужен будет.


Что-то FindWindow() перестала искать заголовок, наверное это связано с тем, что окно спрятано в системный трей...
Буду пробовать Мьютекс...

488
10 августа 2005 года
Mоngооsе
465 / / 01.04.2005
Цитата:
Originally posted by Vovka
Что-то FindWindow() перестала искать заголовок, наверное это связано с тем, что окно спрятано в системный трей...
Буду пробовать Мьютекс...

А mutex что тебе даст??? :)

472
10 августа 2005 года
Vovka
139 / / 10.02.2005
Цитата:
Originally posted by Mоngооsе
А mutex что тебе даст??? :)



Вот статью нашел:
http://www.zevs.hobi.ru/showdoc.phtml?link=Docs/VC/avins/avins.xml.htm

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог