Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Delphi x64
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.11.2024, 20:52
kaka4a kaka4a вне форума
Прохожий
 
Регистрация: 23.03.2013
Сообщения: 3
Версия Delphi: 2009
Репутация: 10
По умолчанию Запуск одного экземпляра программы...

Всем привет.
Имеем такой код :
Код:
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.
При компиляции в 32-бита - всё работает, при 64 - полный игнор данного кода... Куда копать?
Ответить с цитированием
  #2  
Старый 04.11.2024, 22:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Была подобная фигня. Посмотри возвращаемое значение - там скорее всего ошибка типа неправильные параметры. Т.е. не совпадает размерность каких то флагов. Типа у тебя WORD, а там в 64-bit надо DWORD.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
kaka4a (06.11.2024)
  #3  
Старый 06.11.2024, 15:42
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 45
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Можно же использовать другой вариант

Код:
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)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter