Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.19.55.8] |
|
Сообщ.
#1
,
|
|
|
Хочу чтобы в системе не могло находиться двух загруженных моих приложений, т.е. если мое приложение уже запущено, и попробовать запустить его еще раз, то просто на экран восстанавливается уже загруженный экземпляр и все.
Делаю так: --- project1.dpr --- ... var m_HWnd : HWND; begin m_HWnd := FindWindow('TForm1', 'Run Application'); if not (m_HWnd = 0) then ShowWindow(m_HWnd, SW_SHOW) else begin Application.Initialize; Application.CreateForm(TForm1, Form1); Form1.Caption := 'Run Application'; //изначально капшен другой Application.Run; end; end. --- Идея ясна? Но это не совсем работает – приложение восстанавливается, но не помещается на первый план и не становится активным. Как это сделать? |
Сообщ.
#2
,
|
|
|
Я решал эту задачу немного по-другому:
1. Регистрирую собственный Message. 2. В WinMain создаю Mutex. Если он уже создан (GetLastError=ERROR_ALREADY_EXISTS), выполняю SendMessage(HWND_BROADCAST, зарегестр. Message, 0, 0) и завершаю WinMain. 3. Изменяю у формы Dispath и ловлю указанный Message. После прихода Message выполняю: Application.Restore; Application.BringToFront; |
Сообщ.
#3
,
|
|
|
Есть хороший способ. Действенный. Пробовал сам. Пиши dims@nm.ru
|
Сообщ.
#4
,
|
|
|
Только что скачал с сайта Мастера Делфи статью об этом, лежит в разделе Статьи, самая первая.
|