запрет запуска копии программы
stepaev
Дата: 12.03.2003 15:42:13
Никто не подскажет, как запретить запуск второй копии программы на компьютере одновременно?
Артем1
Дата: 12.03.2003 15:47:11
Посмотри на delphikingdom в faq. Там есть пара нормальных решений.
KirillovA
Дата: 12.03.2003 15:55:25
FindWindow для поиска запущенной проги.
Alex Alexeev
Дата: 12.03.2003 16:38:33
Можено использовать Mutex, нет так давно на этом форуме было
KirillovA
Дата: 12.03.2003 17:06:37
А если прога умрет - как ты мьютекс убивать без перезагрузки компа будешь?
ziktuw
Дата: 12.03.2003 17:22:56
Mutex умирает тут же, как только перестает существать процесс, её создавший. Это гарантирует архитектура Win32
SmaLL
Дата: 13.03.2003 14:38:49
В файле проекта *.dpr
var
hwndPrev: HWND;
begin
Application.Initialize;
hwndPrev:= FindWindow('<имя твоей формы, например - TMainForm>', nil);
if hwndPrev <> 0 then
begin
SetForegroundWindow(hwndPrev);
Application.Terminate;
end
else
begin
Application.CreateForm(TParamForm, ParamForm);
Application.CreateForm(TSendMainForm, SendMainForm);
Application.Run;
end;
|
|
eNose
Дата: 13.03.2003 14:44:04
Весело, но неправильно (в общем случае). А вдруг Caption у mainform поменяется?
С мьютексами надежнее.
SmaLL
Дата: 13.03.2003 15:19:21
Весело, но неправильно (в общем случае). А вдруг Caption у mainform поменяется?
А где ты увидел Caption!! На его месте стоит nil. В том-то вся и фишка, что капшн формы можно менять хоть до опупения.
Все вытанцовывается от имени формы.
Я, например в таких случаях даю какое-нибудь оригинальное имя майнформ, что-то вроде TSmaLLSendMainForm75.
eNose
Дата: 13.03.2003 15:23:31
HWND FindWindow(
LPCTSTR lpClassName, // pointer to class name
LPCTSTR lpWindowName // pointer to window name
);
Ну и где там ИМЯ ФОРМЫ???