Einzelnen Beitrag anzeigen

Pro_RJ

Registriert seit: 16. Apr 2008
146 Beiträge
 
#1

eine DLL zwangsweise beenden

  Alt 12. Feb 2009, 20:07
Guten abend zusammen,

Ich hab da ein "kleines" Problem mit dem Zwangsweisen beenden einer DLL.
Es geht um folgendes,
Ich habe von eine externe Dll von der ich leider den Quelltext nicht habe.
In dieser Dll wird ein eigener Thread erzeugt --> dieser Thread erzeugt ein Kommunikationsobject welches via ISDN eine Telefonverbindung aufbaut.Bei der Abwahl der Verbindung beleibt dieser Threat allerding ab und zu stehen und macht nichts mehr.Aber wie gesagt, an die Programmteile der dll komme ich leider nicht ran

In meinem Hauptprogramm erzeuge ich einen eigenen Thread welcher diese Dll aufruft. Das problem ist, das dieser Thread auch stehen bleibt, wenn die Dll stehen bleibt.
Die Frage ist, wie kann ich diesen Thread beenden so das auch das Kommunikationsobject und die DLL freigegeben werden.

der Aufruf der Dll sieht in etwar so aus:

Delphi-Quellcode:
Dll := LoadLibrary(PChar(DllPfad));
Proc := GetProcAddress(Dll,'ProcName' );
Ergebniss := Proc(Param1,0);
FreeLibrary(DLL);
Ich kann zwar per "FreeLibrary(DLL)" Die Adresse der Dll verwerfen und mein erzeugten Thread per "terminateThread(Th.Handle,0);" Beenden und dieser ist dann laut TaskManager auch verschwunden nur bleibt das von der DLL erzeugte Objekt incl ISDN-Verbindung weiterhin aktiv, und das Modem "gesperrt", so das ich über dieses Modem keine neue Verbindung aufbauen kann.

Die ISDN-Verbindung wird mittels ModemName aufgebaut(bsp.: "AVM-ISDN(X75)" ). Die Frage ist, wie kann ich das Object und die Verbindung zwangsweise beenden und das Modem wieder so Initialisieren, das es wieder eine neue Verbindung aufbauen kann.
Wenn ich das Programm via Taskmanager beende wird das Object und die Verbindung wieder frei, nur diese Art der Lösung finde ich extrem unsauber.

Danke schonmal im vorraus.
Jens
  Mit Zitat antworten Zitat