Einzelnen Beitrag anzeigen

Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

Re: Mehrfaches einbinden von DLL verhindern.

  Alt 13. Aug 2008, 08:34
Zitat von mkinzler:
Das Laden der Dll erfolgt durch Windows. Du müsstest die Sperrverwaltung also manuell implementieren
Das habe ich mir schon gedacht. Die Frage ist nur wie? Für meine Programme habe ich diese Unit, welche ich einfach in das Projekt einbinde:

Delphi-Quellcode:
unit MultipleAppicationNotifyer;

interface

implementation
uses
  Windows, Dialogs, SysUtils, Forms;

var
  mHandle : THandle;

initialization
  mHandle := CreateMutex(nil, True, pChar(Application.Title));

  if GetLastError = ERROR_ALREADY_EXISTS then
  begin
    CreateMessageDialog('Application already running!', mtWarning, [mbOk]).ShowModal;
    Halt;
  end;


finalization
  if mHandle <> 0 then
    CloseHandle(mHandle)

end.
Funktioniert super. Aber wie mache ich das bei ner DLL?


Zitat von Luckie:
Warum dürfen die Funktionen nicht parallel ausgeführt werden? Jedes Programm, welches die DLL läd bekommt eine eigene Kopie der Daten - auch der globalen Varaiablen, da sollte nichts passieren.
Weil ich dort auf USB Geräte zugreife. Wenn Kommunikation im Gange ist bzw. das USB-Gerät irgendwelche Aufgaben ausführt und dann ein zweites Programm dazwischenfunkt, es zu Fehlern kommen kann. Das möchte ich so verhindern.
  Mit Zitat antworten Zitat