- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
procedure TForm1.FormCreate(Sender: TObject);
var formattedDateTime : string; S: TSearchRec; sf : Int64;
begin
Application.OnException := MyHandler;
if IsRunningEXEName(ExtractFileName(Application.ExeName)) = true then
begin
Application.Terminate;
Exit;
end;
Пойду тоже сеппуку сделаю. Или посплю. :)
вариант: создавать лок-файл, или открывать сокет.
Юзать JNA или JNI.
P.S. Тут же делфи, а для старых делфей (а я чуть менее чем уверен, что тут говнокодили на седьмой) что FindWindow что мутексы - винапишные костыли.
Я делал с виндовыми мьютексами, но в самом деле, никогда не проверял запуск от разных пользователей.
In my app I use ConvertStringSecurityDescriptorToSecurityDescriptor and pass this string descriptor: D:(A;OICI;GRGW;;;AU). That grants read/write access for authenticated users.
WinAPI. Просто и наглядно.
http://govnokod.ru/23383#comment390615
Попробуйте просто открыть файл в эксклюзивном режиме. Второй процесс при этом обломается, и получит ошибку. И никакого таймера не нужно ;)
UPD: второй параметр, передаваемый winmain(). не оно?