![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Всем привет.
Имеем такой код : Код:
Const
MemFileSize = 1024;
MemFileName = 'tratata';
Var
MemHnd : HWND;
begin
MemHnd := CreateFileMapping(HWND($FFFFFFFF),
nil,
PAGE_READWRITE,
0,
MemFileSize,
MemFileName);
if GetLastError<>ERROR_ALREADY_EXISTS then
begin
//тут продолжаем запуск приложения
end
else begin
//тут блокируем запуск второй копии
end;
end.
|
|
#2
|
|||
|
|||
|
Была подобная фигня. Посмотри возвращаемое значение - там скорее всего ошибка типа неправильные параметры. Т.е. не совпадает размерность каких то флагов. Типа у тебя WORD, а там в 64-bit надо DWORD.
|
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
kaka4a (06.11.2024)
| ||
|
#3
|
|||
|
|||
|
Можно же использовать другой вариант
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
hMutex : THandle;
begin
hMutex := CreateMutex(nil, true , 'tratata');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
CloseHandle(hMutex);
Application.Terminate;
end;
end;При запуске второй копии программы она закроется |
| Этот пользователь сказал Спасибо Vladimr за это полезное сообщение: | ||
kaka4a (06.11.2024)
| ||