Thema: Delphi CreateSemaphore

Einzelnen Beitrag anzeigen

Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#7

Re: CreateSemaphore

  Alt 14. Sep 2004, 12:57
Hab' mal versucht das mit MMF umzusetzen. Das ist dabei herausgekommen...
Delphi-Quellcode:
const
  MMFName = '{8EC74560-C6B6-44A2-B466-7027525527E0}';

var
  MMFHandle: THandle;
  LastError: DWORD;

initialization

  MMFHandle := OpenFileMapping(FILE_MAP_ALL_ACCESS, False, MMFName);
  LastError := GetLastError;

  if MMFHandle <> 0 then
    MessageBox(0, 'Diese Anwendung wird bereits ausgeführt.', nil, MB_OK or MB_ICONEXCLAMATION);

  if (MMFHandle = 0) and (LastError = ERROR_ACCESS_DENIED) then
    MessageBox(0, 'Diese Anwendung wird bereits unter einem anderem Benutzerkonto ausgeführt.',
      nil, MB_OK or MB_ICONEXCLAMATION);

  if (MMFHandle = 0) and (LastError = ERROR_FILE_NOT_FOUND) then
  begin
    MMFHandle := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE, 0, 1, MMFName);
    Exit;
  end;

  Halt(0);

finalization

  if MMFHandle <> 0 then
    CloseHandle(MMFHandle);

end.
Ist auf jeden Fall besser als GlobalAddAtom.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat