| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Проблема с минимизацией и восстановлением |
| Автор: santey 24.5.2007, 23:54 |
| Здравствуйте. Подскажите кто сможет, ситуация следующая. Мне необходимо, чтобы на одном компьютере запускалось только одно приложение. Я при помощи мьютексов устанавливаю, работает ли приложение уже на компьютере, и вот если работает в свернутом виде в панеле задач, то после запуска этого приложения из панели задач возникают проблемы с его минимизацией. Например. У меня имеется 1 запущенное приложение, я его минимизирую в полосу задач нажатием кнопки на Esc, после чего приложение минимизируется функцией Perform(WM_SYSCOMMAND,SC_MINIMIZE,0); пробовал и вот так Application->Minimize(); пробовал и через дескриптор. Далее запускаю 2 такое же приложение, причем мне не нужно, что бы оно запускалось, а нужно, чтобы 1 приложение восстановилось из полосы задач, а второе закрылось, я использую из второго приложения следующие строки кода. HANDLE h=OpenMutex(SYNCHRONIZE,true,"MyForm"); //открываю мьютекс if(h) //если приложение уже работает { HANDLE hwnd=FindWindow("TFormMain","Приложение"); //нахожу дескриптор 1 приложения ShowWindow(hwnd,SW_SHOWNORMAL); //здесь пробовал также SW_RESTORE, показываю 1 приложение SetForegroundWindow(hwnd); //если было запущены другие программы, то 1 приложение показываю поверх всего Application->Terminate(); //закрываю 2 приложение } else //если приложение не работает, то создаю мьютекс CreateMutex(NULL,true,"MyForm"); То есть второе приложение закрывается, так как работает первое и первое восстанавливает свои размеры, но если попытаться первое приложение минимизировать, то ничего не получается, окно не хочет сворачиваться в панель задач. Подскажите в чем может быть дело? |
| Автор: ama_kid 25.5.2007, 09:26 | ||
Вместо вот этогопопробуй
|
| Автор: Anikmar 25.5.2007, 09:41 |
| А проверка эта точно один раз при запуске срабатывает? Вы случайно не в обработчик события ее поместили? |
| Автор: santey 25.5.2007, 23:40 |
| http://delcb.com/forum/viewtopic.php?p=358#358 вот здесь очень грамотное решение данной проблемы. |
| Автор: Klin 26.5.2007, 00:01 | ||
Единственный форум, где так грамотно все переделали |