А вы замечали, что созданная вами программа может запускаться несколько раз одновременно? Если нет, запустите свою программу, затем, не завершая ее, попробуйте еще раз запустить. И вы убедитесь. Хотя мне кажется, что многие из вас уже с этим сталкивались, и, возможно, до сих пор не нашли выхода из этой ситуации. Так вот, exe файл программы можно запустить неограниченное количество раз, тем самым на вашем ПК образуется много одновременно работающих копий. А чтобы избежать этого, можно запретить запуск второго экземпляра программы. Это можно сделать, добавив следующие несколько строчек кодов в ваш проект: uses Windows
var HM: THandle; function Check: boolean; begin HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'MyOwnMutex'); Result := (HM <> 0); if HM = 0 then HM := CreateMutex(nil, false, 'MyOwnMutex'); end; |
Этот текст должен находиться в модуле project. Добраться до него можно через меню View/Project Source. Либо нажать Ctrl + F12 и выбрать Project1.
В итоге ваш код будет выглядеть примерно таким образом: program Project1; uses Forms, Windows, // не забудьте эту строчку Unit1 in 'Unit1.pas' {Form1}; {$R *.RES}
var HM: THandle; function Check: boolean; begin HM := OpenMutex(MUTEX_ALL_ACCESS, false, 'MyOwnMutex'); Result := (HM <> 0); if HM = 0 then HM := CreateMutex(nil, false, 'MyOwnMutex'); end;
begin if Check then Exit; Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |
Нравится
|