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.