|
|
Регистрация | << Правила форума >> | 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.
|
#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; При запуске второй копии программы она закроется |