Technikfrage zu init() ...

Brauchen Sie Hilfe beim Benutzen eines Plugins?

Moderator: Forum-Team

Technikfrage zu init() ...

Beitragvon 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 ...
childintime[äht]gmx.de ;) ...
Tragt eure Mailkontodaten hier ein, damit für möglichst viele Provider Hilfe angeboten werden kann.
Bild
Benutzeravatar
S3bast1an
Forumjunkie
Forumjunkie
 
Plugin-Programmierer
 
Beiträge: 1432
Registriert: 3. Jul 2003, 18:14
Wohnort: Bärlin

Re: Technikfrage zu init() ...

Beitragvon 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.
Die Redenden wissen nicht viel - Die Wissenden reden nicht viel!
http://www.CuteConnections.Com
Spam these adresses: SpamCatcher@CuteConnections.Com Delete@CuteConnections.Com Recycle@BillyX.com Muell@BillyX.com
BillyX
Fast schon ein Mitarbeiter
Fast schon ein Mitarbeiter
 
Plugin-Programmierer
 
Beiträge: 409
Registriert: 16. Mai 2003, 18:51
Wohnort: Linz

Re: Technikfrage zu init() ...

Beitragvon 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
Chuck Norris doesn't kill Spam. He uses Spamihilator! ;-)
Benutzeravatar
michel
Administrator
Administrator
 
Administration
Beta-Tester
Forum-Team
Plugin-Programmierer
 
Beiträge: 4314
Registriert: 22. Mär 2003, 02:16
Wohnort: Buseck


Zurück zu Plugins: Hilfe

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron

 industrious-southeast