![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как блокировать повторный запуск? [D5, D6, Win95/98, Win2k]
BillyJeans © (2002-09-16 10:44:00)Подскажите, каким образом при запуске сделать проверку, запущена программа уже или нет? А если запущена то Exit!
Separator (2002-09-16 11:57:00) [1]Про мьютексы читай в умныз книгах.
А вот пример его использования:
var
HMutex: THandle;
begin
HMutex:= CreateMutex(nil, False, "MySuperProga");
if WaitForSingleObject(HMutex, 0)<>wait_TimeOut then
begin
Application.Initialize;
Application.CreateForm)TForm1, Form1);
Application.Run
end
end.
А вообще слей какой-нибудь нормальный фак и там по этому вопросу куча примеров
BillyJeans (2002-09-16 10:58:00) [2]какой такой мьютекс?
vikki (2002-09-16 10:50:00) [3]мьютекс используй
Separator (2002-09-16 10:49:00) [4]program CopyProg;
uses
Forms,
Dialogs,
Windows,
SysUtils,
UnitBasic in "UnitBasic.pas" {FormBasic};
{$R *.res}
var
Atom: word;
Title: PChar;
myHandle: THandle;
begin
// Определени названия програмы
myHandle:= Application.Handle;
Title:= StrAlloc(255);
GetWindowText(myHandle, Title, 255);
// Определение запуска второй копии
if GlobalFindAtom(Title) <> 0 then
begin
ShowMessage("Попытка запуска второй версии программы!");
Halt
end;
// Запуск программы
Atom:= GlobalAddAtom(Title);
Application.Initialize;
Application.Title:= "My Program";
Application.CreateForm(TFormBasic, FormBasic);
Application.Run;
GlobalDeleteAtom(Atom)
end.