Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.08.2012, 17:42
iisyyyys iisyyyys вне форума
Прохожий
 
Регистрация: 02.08.2012
Сообщения: 8
Репутация: 10
По умолчанию проверка запущена ли уже программа?

опишите пожалуйста, как сделать так, чтобы при запуске программы проверялось запущен ли процесс и если запущен, чтобы программа автоматически закрывалась
Ответить с цитированием
  #2  
Старый 02.08.2012, 18:24
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

если ищется процесс раз и два (дальше гугл), если не допустить повторный запуск
Провожу тренинги по пользованию гуглом, первое занятие бесплатно, ваше первое занятие окончено
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
Этот пользователь сказал Спасибо cotseec за это полезное сообщение:
iisyyyys (02.08.2012)
  #3  
Старый 02.08.2012, 19:58
iisyyyys iisyyyys вне форума
Прохожий
 
Регистрация: 02.08.2012
Сообщения: 8
Репутация: 10
По умолчанию

но у меня нету формы, именно процесс
Ответить с цитированием
  #4  
Старый 02.08.2012, 20:02
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

изучай внимательней!
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 02.08.2012, 20:26
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Гугл весьчь хорошая, но есть ешьчо и Рамблер сиречь Яндекс, там тоже первый ван бесплатно Способов не запуска второй копии навалом, можно и атомом, можно и мьютексом проверять, но возможен и простой способ - это поиск запущенного приложения в среде по имени, если оно есть, то закрываем двойника принудительно. Энто всё прописывается в файле проекта (*.dpr), до старта проги:
Код:
program Project1;
uses
  Forms,
  Windows,  SysUtils, // Эти юниты нужно добавить
  Unit1 in 'Unit1.pas' {Form1};

 var
HwndPrev:HWND;

  {$R *.res}

begin

  Application.Initialize;
  
 // Сначало ищем в системе главную форму по имени   
  HwndPrev := FindWindow('TForm1','Form1'); // в кавычках прописываем имя формы и её заголовок 

  if HwndPrev <= 0  then // и если её нет, то... 

  begin
  Application.CreateForm(TForm1, Form1);
  Application.Run;

  // запускаем приложение,

  end else // а если оно уже запущено, то грохаем двойника:
  begin
  SetForegroundWindow(HwndPrev); // тут передаём фокус мастеру, можно это и не делать 

  Application.Terminate; 

  end;
   end.
Ответить с цитированием
  #6  
Старый 02.08.2012, 20:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

предлагаешь одно:
Цитата:
Сообщение от Alegun
поиск запущенного приложения в среде по имени
а делаешь другое:
Цитата:
Сообщение от Alegun
HwndPrev := FindWindow('TForm1','Form1'); // в кавычках прописываем имя формы и её заголовок
к тому же:
Цитата:
Сообщение от iisyyyys
у меня нету формы

читай внимательней!)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #7  
Старый 02.08.2012, 20:44
Аватар для RusMaXXX
RusMaXXX RusMaXXX вне форума
Начинающий
 
Регистрация: 01.10.2008
Сообщения: 138
Версия Delphi: 7
Репутация: 21
По умолчанию

Код:
uses
  SyncObjs;

procedure CheckDbl;
begin
  CheckEvent := TEvent.Create(nil, false, true, 'MYPROGRAM_CHECKEXIST');
  if CheckEvent.WaitFor(10) <> wrSignaled then
  begin
    MessageBox(0,'Программа будет закрыта','Инфа',0);
  end;
end;
__________________
уволен в запас!!!
Ответить с цитированием
  #8  
Старый 02.08.2012, 20:50
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

УК RusMaXXX, подскажи пжлст, SyncObjs из какого пакета?
Ответить с цитированием
  #9  
Старый 02.08.2012, 20:56
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

\Rtl\Common\
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Alegun (02.08.2012)
  #10  
Старый 03.08.2012, 16:27
iisyyyys iisyyyys вне форума
Прохожий
 
Регистрация: 02.08.2012
Сообщения: 8
Репутация: 10
По умолчанию

нужно добавить
var
CheckEvent: TEvent;
Ответить с цитированием
  #11  
Старый 03.08.2012, 16:52
iisyyyys iisyyyys вне форума
Прохожий
 
Регистрация: 02.08.2012
Сообщения: 8
Репутация: 10
По умолчанию

Код:
uses
SyncObjs;
procedure CheckDbl;
var
CheckEvent: TEvent;
begin
  CheckEvent:= TEvent.Create(nil, false, true, 'MYPROGRAM_CHECKEXIST');
  if CheckEvent.WaitFor(10) <> wrSignaled then halt;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:46.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025