Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#5

AW: DLL doppelt nutzen

  Alt 16. Dez 2021, 14:13
Du kannst schauen, ob der COM Port frei (du ihn also öffnen kannst) ,
dann wäre die DLL nicht geladen (wenn sie auf den Port zugreift)

Du könntest dir in der EXE selber ein globales "Flag" setzen, wenn dort die DLL geladen wird und das prüfen.
MSDN-Library durchsuchenCreateMutex

Oder du müsstest eben die anderen Prozesse durchgehen, dir da die DLLs auflisten und nachsehn
EnumProcesses OpenProcess MSDN-Library durchsuchenEnumProcessModules GetModuleFileNameEx

[add]
Du könntest auch die TreiberDLL umgenennen,
eine eigene DLL mit den selben öffentlichen Schnittstellen erstellen, welche den Zugriff zur eigentlichen DLL durchreicht.
Und während die Anwendung nicht auf die DLL zugreift, könntest du in deiner DLL oder via IPC zur LoggerEXE die Grenzwerte abfragen/prüfen.

Oder in der NeuenDLL der LogggerEXE mitteilen, wann sie starten kann oder sich beenden soll.
-> wird das Programm gestartet, läd deine DLL (eigentlich die TreiberDLL), dann dem Logger sagen "aufhören" und deine TreiberDLL freigeben, damit das Programm drauf zugreifen kann.
-> wird das Programm wieder beendet (deine DLL entladen), dann "hey Logger, du kannst wieder"
-> und ansonsten einfach nur alle Funktionsaufrufe/Callbacks zwischen TreiberDLL und Programm durchreichen/weiterleiten
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (16. Dez 2021 um 14:19 Uhr)
  Mit Zitat antworten Zitat