![]() |
DLL beenden? [FEHLER]
Hallo zusammen, ich habe wieder ein Problemchen.
Und zwar habe ich eine DLL, die zwei Threads hat, die dauerhaft laufen. Nun möchte ich nach einer gewissen Zeit die DLL "beenden". Ich habe diese Funktion gefunden, aber leider crasht dadurch nur die exe.
Code:
Kann mir da jemand weiterhelfen, wie ich die DLL beendet bekomme?
function KillDll(aDllName: string): Boolean;
var hDLL: THandle; aName: array[0..10] of char; FoundDLL: Boolean; begin StrPCopy(aName, aDllName); FoundDLL := False; repeat hDLL := GetModuleHandle(aName); if hDLL = 0 then Break; FoundDLL := True; FreeLibrary(hDLL); until False; end; |
AW: DLL beenden? [FEHLER]
Kommt die DLL von dir? Wenn nicht, hast du Zugang zum Quellcode?
Wie bindest du die DLL ein? Wenn du an den Quellcode kommst, kannst du der DLL ja einfach eine Prozedur spendieren, die die Threads stoppt, und diese dann aus der Echse heraus aufrufen. |
AW: DLL beenden? [FEHLER]
Hallo, erstmal danke für deine Hilfe.
Die DLL ist von mir, also hab ich den Source. Aber ist es überhaupt möglich einen String zu übergeben, wenn die DLL bereits eingebunden ist? |
AW: DLL beenden? [FEHLER]
Einen String zu übergeben ist keine gute Idee. Wenn du Sharemem als erste Unit eingebunden hast (bei Programm und DLL), dann geht es zwar, aber Sinn macht es nicht wirklich.
Übergib einfach einen PAnsiChar bzw. PWideChar an die DLL-Funktion und damit hast du eine saubere Schnittstelle. Aber wozu brauchst du denn überhaupt einen String für die Beendigung der Threads? |
AW: DLL beenden? [FEHLER]
Naja, ich arbeite erst seit kurzer Zeit mit DLL's, kenne mich damit also noch nicht wirklich aus.
Aber irgendwo her muss die DLL doch wissen wann die Threads beendet werden sollen. Und da die EXE weiß wann die DLL nicht mehr benötigt wird, dachte ich mir, übergebe ich einen String damit auch die DLL weiß wann sie aufhören kann. |
AW: DLL beenden? [FEHLER]
Wie wäre es, wenn du gar nichts übergibst und einfach eine Funktion ohne Parameter in der DLL baust, die deine Exe dann aufruft?
|
AW: DLL beenden? [FEHLER]
Also ich habe jetzt wieder einige Zeit rum probiert... Allerdings ohne Erfolg.
Hast du vielleicht ein Beispiel dafür? jaenicke? Wäre dir sehr Dankbar. |
AW: DLL beenden? [FEHLER]
Liste der Anhänge anzeigen (Anzahl: 1)
Ich verstehe nicht wo du nicht weiter kommst. Was hast du denn versucht?
Ein Beispiel ist einfach, ja... Siehe Anhang... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz