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

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

Вторая копия программы [D6, Win95/98]


Soft ©   (2002-09-12 18:47:00) 

Привет народ.

Не подскажете как определить запусчена ли уже определенная программа. FindWindow плохой способ, не пойдет. Может через сокеты. Или нет в Винде каких-то семафоров?


RV   (2002-09-13 09:18:00) [1]

program SelfCheck;

uses

Windows,
Forms,
Unit1 in "Unit1.pas" {Form1};

const

AtStr="MyProgram";

function CheckThis : boolean;
var

Atom: THandle;
begin

Atom:= GlobalFindAtom(AtStr);
Result:= Atom <> 0;
if not result
then GlobalAddAtom(AtStr);
end;

begin

if not CheckThis
then begin // Запуск программмы
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.Run;
GlobalDeleteAtom(GlobalFindAtom(AtStr)); // !!!
end
else begin
MessageBox(0,"Нельзя запустить две копии","Моя программа",0);
end;
end.

Элегантно и работает


MBo   (2002-09-12 18:50:00) [2]

CreateMutex


Наверх

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