![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запретить запуск второй копии программы?
Jiurasdfgfr © (2004-05-20 14:58:00)сабж.
WebErr (2004-05-20 16:36:00) [1]
var
P: PChar;
S: String;
W: HWND;
...
try
GetMem(P, 256);
except
ShowMessage('!');
Exit;
end;
GetClassName(Handle, P, 255);
S := P;
W := FindWindow(0, 0);
while W <> 0 do
begin
W := GetNextWindow(W, GW_HWNDNEXT);
GetClassName(W, P, 255);
if StrComp(PChar(S), P) = 0 then
ShowMessage('Ура!');
end;
FreeMem(P);
Алхимик (2004-05-20 15:16:00) [2]Вариантов - туева хуча.
Например, при старте программы искать окно с таким же заголовком.
Если нашёл - считать что программа уже запущена и преравать её выполнение.
см местный FAQ.
Ega23 (2004-05-20 15:16:00) [3]ss:=ExtractFileName(paramstr(0) );
hnd:=CreateMutex(nil, false, PChar(ss) );
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Beep(100,200); //MessageBeep ->in WinProcs
bo:=ReleaseMutex(hnd);
Halt(1);
end;
Тут правда фишка, что если программу переименовать, то запустить можно. Но это сознательно было сделано.