Technikfrage zu init() ...

Antwort erstellen

Bestätigungscode
Gib den Code genau so ein, wie du ihn siehst; Groß- und Kleinschreibung wird nicht unterschieden.
Smilies
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet
Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Technikfrage zu init() ...

Beitrag von michel » 18. Nov 2003, 21:42

Hi!

init() wurde vor 0.9.7 gar nicht aufgerufen. Das war ein Programmierfehler, den ich leider nicht rechtzeitig bemerkt habe :-(

Damit muss man jetzt leben. Wenn man ein Plugin für ältere Versionen erstellt, muss man die init()-Funktion manuell aufrufen (ähnlich, wie es BillyX beschreibt). Ich verwende dazu meistens die DllMain()-Funktion, die jedesmal aufgerufen wird, wenn Spamihilator die DLL lädt:
Code: Alles auswählen
BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved);

Diese Funktion muss auch aus der DLL exportiert werden - genauso, wie GetSpamCheckPluginInfo().

Normalerweise sollte init() jedesmal aufgerufen werden, wenn Spamihilator ein Plugin lädt. Das findet zum Beispiel beim Programmstart statt, aber auch, wenn ein Plugin im Einstellungsfenster aktiviert wird.

Gruß
Michel Krämer

Beitrag von BillyX » 17. Nov 2003, 19:54

Zumindest früher hat das mit Init nicht richtig funktioniert... Und auch jetzt scheint das Verhalten noch nicht ganz definiert zu sein...

Ich löse das so: Init-Methode schreiben und in einer Variable merken ob sie schon aufgerufen wurde und wenn nicht an verschiedenen Stellen im Programm aufrufen. Bei free die Variable wieder zurücksetzen.

Technikfrage zu init() ...

Beitrag von S3bast1an » 17. Nov 2003, 19:20

Hey,

ich hab mal ne ganz generelle Frage zu dlls und Spami. Es gibt ja nun diese init-Funktionseinbaumoeglichkeit. Aber was ich in der init() initialisiere wie lange bleibt mir das erhalten, oder: wann wird die denn immer aufgerufen, bei jedem Start .. oder bei jedem mal Mailsabrufen?

Ich mache derzeit so fast alles mit lokalen Variablen, die ich dann immer wieder schoen neu initialisiere .. vielleicht koennt ich da was vereinfachen. Ich ging aber bisher immer davon aus, dass meine dll quasi bei jedem Neutstart ebenfalls neu startet und alle Variablenwerte verloren sind...

und wie ists mit free()?

Gruss
S.

PS: Hoffe das ist jetzt keine zu komische Frage, aber manchmal sinds die kleinen Sachen die einem fehlen ...

Nach oben

 industrious-southeast