Форум: "Начинающим";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизКак запретить одновременный запуск нескольких копий пронграммы Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c