Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Как запретить одновременный запуск нескольких копий пронграммы   Найти похожие ветки 

 
koks   (2005-10-06 16:27) [0]

Собственно, сабж.

Хочу чтобы невозможно было запустить программу если она уже запущена.

Как это поймать...

Заранее спасибо


 
Eraser ©   (2005-10-06 16:29) [1]


> koks   (06.10.05 16:27)

http://www.rambler.ru/srch?words=%E7%E0%EF%F0%E5%F2%E8%F2%FC+%EE%E4%ED%EE%E2%F0%E5%EC%E5%ED%ED%FB%E9+%E7%E0%EF%F3%F1%EA+ %ED%E5%F1%EA%EE%EB%FC%EA%E8%F5+%EA%EE%EF%E8%E9+%EF%F0%EE%E3%F0%E0%EC%EC%FB&old_q=%EE%E4%ED%EE%E2%F0%E5%EC%E5%ED%ED%FB%E9 +%E7%E0%EF%F3%F1%EA+%ED%E5%F1%EA%EE%EB%FC%EA%E8%F5+%EA%EE%EF%E8%E9+%EF%F0%EE%E3%F0%E0%EC%EC%FB&btnG=%CD%E0%E9%F2%E8%21

Используй именованые объекты ядра.


 
clickmaker ©   (2005-10-06 16:33) [2]

CreateMutex("YourUniqueName")
if GetLastError = ERROR_ALREADY_EXISTS
 значит, уже запущено


 
IceBeerg ©   (2005-10-06 16:54) [3]

В файле проэкта:
If
uses ... windows;
...
Begin
FindWindow(PChar(String(Application.MainForm.ClassName)),PChar(Application.MainForm.Caption))<>0 Then Begin ShowWindow(FindWindow(PChar(String(Application.MainForm.ClassName)),PChar(Application.MainForm.Caption)),sw_Normal); Halt; End;
...

Вроде синтаксический контроль прошло... проверяй на работоспособность...


 
Floppy ©   (2005-10-06 18:28) [4]

А я в *.dpr, делаю так:
program Project1;
uses
 Forms,
 Unit1 in Unit1 .pas" {Form1},

{$R *.RES}

begin
 Application.Initialize;
 
 if FirstHinstanceRunning(0) then
   Exit;

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

end.


 
Андрей Жук ©   (2005-10-06 18:59) [5]

const
 MemFileSize = 127;
{$IFDEF TEST_PROGRAMM}
 MemFileName = "mydb_home_memfile_test";
{$ELSE}
 MemFileName = "mydb_home_memfile";
{$ENDIF}

var
 Text, Caption: string;
 hwnd: THandle;
 IsOurApplicationRunning: boolean;
begin
 hwnd := FindWindow("TFormMain", nil);
 MemHnd := CreateFileMapping(THandle($FFFFFFFF), nil,
   PAGE_READWRITE, 0, MemFileSize,
   MemFileName);
 IsOurApplicationRunning := (GetLastError <> ERROR_ALREADY_EXISTS) or (hwnd = 0);
 if IsOurApplicationRunning then
 begin
   Application.Initialize;
   Application.Title := "Моя велика база даних";
   Application.CreateForm(TFormMain, FormMain);
 Application.CreateForm(TDataModuleMain, DataModuleMain);
 Application.Run;
 end
 else
   begin
    ShowWindow(hwnd, SW_SHOWMAXIMIZED);
    SetForegroundWindow(hwnd);
   end;
end.




Страницы: 1 вся ветка

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
8-1118217321
ar
2005-06-08 11:55
2005.10.30
формы


14-1128489705
IfBeginThenEnd
2005-10-05 09:21
2005.10.30
Утечка памяти


2-1128495508
Dush
2005-10-05 10:58
2005.10.30
Grid


6-1120773405
viktorovich
2005-07-08 01:56
2005.10.30
Логин и пароль из Outlook Express


14-1128585427
MYSTERYO
2005-10-06 11:57
2005.10.30
8x видаху в 4х AGP порт. Будет ли работать?