AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL beenden? [FEHLER]

Ein Thema von 1Molotow1 · begonnen am 18. Mai 2012 · letzter Beitrag vom 18. Mai 2012
Antwort Antwort
1Molotow1

Registriert seit: 16. Mai 2012
6 Beiträge
 
#1

DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 12:56
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:
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;
Kann mir da jemand weiterhelfen, wie ich die DLL beendet bekomme?
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#2

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 13:02
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.
  Mit Zitat antworten Zitat
1Molotow1

Registriert seit: 16. Mai 2012
6 Beiträge
 
#3

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 13:21
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?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 13:53
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?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
1Molotow1

Registriert seit: 16. Mai 2012
6 Beiträge
 
#5

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 14:03
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 14:09
Wie wäre es, wenn du gar nichts übergibst und einfach eine Funktion ohne Parameter in der DLL baust, die deine Exe dann aufruft?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
1Molotow1

Registriert seit: 16. Mai 2012
6 Beiträge
 
#7

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 18:41
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: DLL beenden? [FEHLER]

  Alt 18. Mai 2012, 19:45
Ich verstehe nicht wo du nicht weiter kommst. Was hast du denn versucht?

Ein Beispiel ist einfach, ja... Siehe Anhang...
Angehängte Dateien
Dateityp: 7z DLL Thread Demo.7z (490,9 KB, 8x aufgerufen)
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz