Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

запуск только одной копии приложения [D7, XP]


Страницы:   1 2

Chuk & Gek ©   (2006-12-18 17:47:00) 

Помогите пожалуйста!
Где-то на компе была информация, но найти не могу...
Лёгкий вопрос:как реализовать запуск только одной копии приложения, т.е. чтобы если программа запушена, то еще одну запустить было нельзя
Спасибо.


orinoko   (2007-01-02 10:46:00) [1]

Я делаю так у себя и все довольны:

procedure TForm1.FormCreate(Sender: TObject);
var S: string;
   PrevInstWind: HWND;
begin
//Проверяем, не запущено ли уже приложение
//Запоминаем заголовок
s:=Application.Title;
//Меняем на что-то другое, чтоб FindWindow его не нашла
Application.Title:='runonce'+s;
//Ищем окно с заголовком приложения
PrevInstWind:=FindWindow(nil,pchar(s));
if PrevInstWind<>0 then
  //Если нашли, то ...
  begin
  //Запрещаем показ главной формы
  Application.ShowMainForm := false;
  //Завершаем текущее приложение
  Application.Terminate;
  //Активизируем предыдущую копию
  if IsIconic(PrevInstWind)
     then
        ShowWindow(PrevInstWind,SW_RESTORE)
     else
        SetForegroundWindow(PrevInstWind);
  //Завершаем процедуру
  exit;
  end;
//Восстанавливаем заголовок
Application.Title:=s;
//дальше пишешь что там у тебя по OnCreate должно быть
// ...
// ...
end;

Всё просто и без всяких изысков


Правильный Вася   (2006-12-28 22:15:00) [2]


> Mickey74 ©   (28.12.06 21:28) [34]
с себя начни


Mickey74   (2006-12-28 21:28:00) [3]

Люди!!!
А нафига вообще на форум заходить если человеку подсказать нормально не можете???


Loginov Dmitry   (2006-12-19 17:49:00) [4]

> но на эту функцию нету в хелпе данных


См. Windows SDK


Anatoly Podgoretsky   (2006-12-19 13:11:00) [5]

> RightD  (19.12.2006 12:23:29)  [29]

> Спасибо, но на эту функцию нету в хелпе данных

Неправда


novill   (2006-12-19 12:31:00) [6]

Это апи функция. Описана в мсдне.

Данные есть (Д6).


Ega23   (2006-12-19 12:30:00) [7]

Не там ищешь.
Поставь на неё курсор и нажми F1


RightD   (2006-12-19 12:23:00) [8]

Спасибо, но на эту функцию нету в хелпе данных


Ega23   (2006-12-19 12:17:00) [9]

Windows?


RightD   (2006-12-19 12:08:00) [10]

Простите, а в каком модуле хранится CreateMutex?


Правильный Вася   (2006-12-18 20:55:00) [11]

да-а, чукча писатель, мыслитель


Chuk & Gek   (2006-12-18 19:46:00) [12]

Спасибо


Loginov Dmitry   (2006-12-18 19:19:00) [13]

begin
 CreateMutex(nil, False, PChar(SStartMutexName));
 if GetLastError = ERROR_ALREADY_EXISTS then Halt;
....
end;


Ega23   (2006-12-18 19:04:00) [14]

При старте проверяешь систему на наличие именованого Mutex. Если есть - выходишь, если нет - создаёшь именованый Mutex.


Chuk & Gek   (2006-12-18 19:02:00) [15]

To Ega23: У меня тоже MainForm всегда. Это правило:) это я просто создал пновое приложение просто чтобы хотя бы сделать эту штуку. У меня на форме даже каждай Label переименован!!!
To Virgo Style: недоволен тем, что не работает!!!:)
Ну ладно спасибо всем помогли чем могли!!! модератор, закрывай ветку!


Virgo_Style   (2006-12-18 18:59:00) [16]

Chuk & Gek ©   (18.12.06 18:41) [19]
Точно, только не вырубает, а вырубается, ну и чем же ты недоволен?)


Ega23   (2006-12-18 18:53:00) [17]

А если она у меня называется MainForm  ? У меня главная форма так во всех моих проектах называется. получается, что мои программы - как Кристофер Ламберт : "Должен остаться только один!"


Chuk & Gek   (2006-12-18 18:41:00) [18]

Он ищет все проги с класом TForm1 и любым заголовком и если не 0 то вырубает...


Virgo_Style   (2006-12-18 18:35:00) [19]

Chuk & Gek ©   (18.12.06 18:15) [9]
if FindWindow('TForm1', Nil)0 then Application.Terminate;


Как ты думаешь, что здесь написано?


Gero   (2006-12-18 18:34:00) [20]

> [16] Chuk & Gek ©   (18.12.06 18:33)
> Если бы знать что это такое

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо