![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запретить одновременный запуск нескольких копий пронграммы [D7, WinXP]
koks © (2005-10-06 16:27:00)Собственно, сабж.
Хочу чтобы невозможно было запустить программу если она уже запущена.
Как это поймать...
Заранее спасибо
Андрей Жук (2005-10-06 18:59:00) [1]
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.
Floppy (2005-10-06 18:28:00) [2]А я в *.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.
IceBeerg (2005-10-06 16:54:00) [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;
...
Вроде синтаксический контроль прошло... проверяй на работоспособность...
clickmaker (2005-10-06 16:33:00) [4]CreateMutex('YourUniqueName')
if GetLastError = ERROR_ALREADY_EXISTS
значит, уже запущено
Eraser (2005-10-06 16:29:00) [5]
> 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
Используй именованые объекты ядра.