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