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

Ваш аккаунт

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

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

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

Проблема с минимизацией и восстановлением

6.2K
25 мая 2007 года
santey
28 / / 31.12.2005
Здравствуйте.

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

Например.

У меня имеется 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");

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

Подскажите в чем может быть дело?
1
25 мая 2007 года
kot_
7.3K / / 20.01.2000
Цитата: santey
Здравствуйте.

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

Например.

У меня имеется 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");

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

Подскажите в чем может быть дело?



Используй плз средства форматирования кода в сообщении пример здесь.
По вопросу. Вместо

 
Код:
Perform(WM_SYSCOMMAND,SC_MINIMIZE,0);

используй
 
Код:
this->WindowState = wsMinimized;
6.2K
26 мая 2007 года
santey
28 / / 31.12.2005
http://delcb.com/forum/viewtopic.php?p=358#358

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