0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
1

не сворачивается окно

18.10.2013, 16:29. Показов 1910. Ответов 17
Метки нет (Все метки)

Пытаюсь сделать запрет запуска второй копии приложения.
Нужно при запуски второй копии выдать сообщение и востановить первую копию на экране
Написал вот такой код
C++
1
2
3
4
5
6
7
8
9
10
HWND hWnd;
        hWnd=FindWindowEx(NULL,NULL,NULL,"OnlyOne");
        if(hWnd!=NULL)
        {
        Application->MessageBox("Приложение уже запущено!","Сообщение", MB_OK);
 
        ShowWindow(hWnd, SW_SHOW);
        SetForegroundWindow(hWnd);
        return 0;
        }
все работает как надо, но почему то нельзя свернуть окно после восстановления, объясните почему так и как это исправить, пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2013, 16:29
Ответы с готовыми решениями:

Не сворачивается окно
Java, NetBeans Логика в проге: Открывается 2 окна: главное и action. При запуске с некоторым...

Окно сворачивается неправильно
Хочу при двойном клике форму свернуть. Оба метода использовал, в результате при сворачивании над...

Не сворачивается окно в панель
Привет всем, такая проблема. У меня 3 формы. Основная работа происходит во второй форме...

Сворачивается полноэкранное окно каждые 15 минут
на долю секунды если 2д приложение на полный экран, появляется и исчезает панель. если...

17
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 16:45 2
Цитата Сообщение от Титаныч Посмотреть сообщение
все работает как надо
странно вы как-то копию восстанавливаете...
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 16:50  [ТС] 3
nick42,
подскажите, пожалуйста, как ее восстановить по другому?
0
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 16:53 4
ключевое слово mutex; здесь уже не раз обсуждалась эта проблема
1
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 16:58  [ТС] 5
Цитата Сообщение от nick42 Посмотреть сообщение
ключевое слово mutex; здесь уже не раз обсуждалась эта проблема
спасибо, буду знать, но я студент и часть кода взята из методички, поэтому делаю так и хотелось бы разобраться почему окно не сворачивается.
0
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 17:07 6
.. для студента никнейм солидный...
Я может тоже не прав, но из той части кода, что показана, нельзя понять, что делается со второй копией (из которой, по видимому, и производится анализ). Получается, что запущены обе копии, и первоначальная "выдвигается" поверх остальных. Такое у меня пока впечатление... .
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 17:12  [ТС] 7
при запуске приложения проверяется открыто ли окно с именем onlyone, если открыто то вы дается сооющение и оно
Цитата Сообщение от nick42 Посмотреть сообщение
"выдвигается" поверх остальных
.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
       HWND hWnd;
        hWnd=FindWindowEx(NULL,NULL,NULL,"OnlyOne");
        if(hWnd!=NULL)
        {
        Application->MessageBox("Приложение уже запущено!","Сообщение", MB_OK);
 
        ShowWindow(hWnd, SW_SHOW);
        SetForegroundWindow(hWnd);
        return 0;
        }
        try
        {
                 Application->Initialize();
                 Application->CreateForm(__classid(TForm1), &Form1);
                 Application->Run();
        }
        catch (Exception &exception)
        {
                 Application->ShowException(&exception);
        }
        catch (...)
        {
                 try
                 {
                         throw Exception("");
                 }
                 catch (Exception &exception)
                 {
                         Application->ShowException(&exception);
                 }
        }
        return 0;
}
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
18.10.2013, 17:15 8
Отслеживать запуск 1 копии приложения по окну плохо т.к. другая прога может иметь окно с таким именем, ваша прога может поменять имя окна в ходе своей работы, а может не иметь окна вовсе
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 17:18  [ТС] 9
я это понимаю ну просто в методичке дан такой код и задание такое.
0
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 17:28 10
Ну, типа можно менять титул после запуска, а при старте проверять именно на новый. Но в этом случае все работает...
C++
1
2
3
4
void __fastcall TForm1::FormPaint(TObject *Sender)
{
     Application->Title = "ABBA";   
}
и
C++
1
hWnd=FindWindowEx(NULL,NULL,NULL,"ABBA");
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 17:34  [ТС] 11
а если не трогать заголовок???
может я плохо объяснил проблему
при запуске первой копии все хорошо(окно можно свернуть развернуть и т.п.), при запуске второй копии все работает как надо: после вывода сообщения всплывает первая копия, и после "всплытия" окно первой копии нельзя свернуть.
вот это нужно исправить
0
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 17:41 12
А ИМЕННО ТАК Я НЕ МОГУ ВОСПРОИЗВЕСТИ! При запуске первой копии не все хорошо, так как это окно сразу и находится; и - сообщение. Как вам удается - удивляюсь... .

Добавлено через 1 минуту
.. диспетчер задач сколько экземпляров "видит"?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32488 / 20974 / 8115
Регистрация: 22.10.2011
Сообщений: 36,246
Записей в блоге: 7
18.10.2013, 17:50 13
Цитата Сообщение от Титаныч Посмотреть сообщение
после вывода сообщения всплывает первая копия, и после "всплытия" окно первой копии нельзя свернуть.
Подобная тема уже была, посмотри: Отображение скрытого в трее окна программы при попытке запуска ее копий
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 19:41  [ТС] 14
nick42,
если у тебя открыт проект, но работать не будет, нужно запускать exe файл 2 раза чтобы работало все
0
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 19:44 15
Я вообще-то всегда компилирую в независимый ("портабельный") вариант и не запускаю из-под Билдера; наверное из-за этого (но я считаю это правильным!).
0
0 / 0 / 0
Регистрация: 17.12.2012
Сообщений: 8
18.10.2013, 20:22  [ТС] 16
UI, а можно сделать без использования синхронизации

Добавлено через 10 минут
еще объясните пожалуйста почему она так работает(не сворачивается)

Добавлено через 23 минуты
nick42, скомпилировал как вы, все также, в диспетчере висит 1 экземпляр при выплывании сообщения появляется 2, после нажатия ок он завершается и остается 1 висеть
0
Практикантроп
4780 / 2680 / 517
Регистрация: 23.09.2011
Сообщений: 5,734
18.10.2013, 21:21 17
У меня Windows 7 ult ("Максимальная"). Наверное, нужен весь проект; по куску кода воспроизвести не получается...
0
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
18.10.2013, 23:34 18
Цитата Сообщение от Титаныч Посмотреть сообщение
еще объясните пожалуйста почему она так работает(не сворачивается)
Потому что она думает, что она свернута. Ты ее свои ShowWindow насильно на свет белый достал, но не развернул, а нужно именно разворачивать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.10.2013, 23:34
Помогаю со студенческими работами здесь

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

При запуске программы сворачивается окно

Любое открытое окно не сворачивается, а просто становится не активным
затухает в виндоуз7 любое открытое окно не сворачивается просто становится не активным

Во время воспроизведения видеофайла самопроизвольно сворачивается окно WMP
Ребята, подскажите, пожалуйста, почему во время воспроизведения видеофайла самопроизвольно...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru