Page 1 sur 1

API - Comment c'est gérer par PB et Windows (Fred?)

Publié : mer. 25/août/2004 12:17
par Le Soldat Inconnu
Salut,

une grande question :

quand je fais par exemple

Code : Tout sélectionner

SetTimer_(WindowID(), 0, 1000, 0)
dans un programme, il se passe quoi concrètement au niveau de la dll concernés ?

je m'explique :
Le prog ouvre la dll, exécute la fonction et ferme la dll ?
ou le prog ouvre la dll, exécute la fonction et ferme pâs la dll ?
ou etc ...

en clair, qu'est-ce qui se passe ?


je pose cette question car j'ai fais la remarque suivante :
- j'ai un programme qui utilise 4.4 mo de ram
- j'optimise la ram (en gros, je remplis la mémoire avec du vent pour focer win à fire le ménage puis je supprime le vent ;) )
- le programme utilise alors 1.2mo en ram
- j'utilise à nouveau le programme en preannt soin de lancer toutes les fonctions
- le programme remonte alors à 2.2Mo soit 2 fois moins de ram pour le même résultat. alors ou sont passer les 2.2Mo qui ont disparu dans l'opération ? et à quoi servait-il ?
je me demande si ce n'est pas les librairie dont à eu besoin mon prgramme pour créer la fenêtre et ses gadgets car j'ai une grosse opération de chargement que je n'utilise plus par la suite.

Quelqu'un à une idée et peut répondre à mes intérogations ?
Merci

Publié : ven. 27/août/2004 1:33
par ZapMan
Je me suis posé le même genre de question (surtout sur les ouvertures et fermetures de Lib) et...hum... je n'ai pas poussé mes tests assez loin pour avoir les réponses. Ce que j'ai remarqué, c'est que j'obtenais de jolis plantage quand j'ouvrais puis refermais des lib déjà utilisée par PureBasic (plantage au moment de la fermeture).
Je suis donc également intéressé par des réponses à ces questions.

Publié : ven. 27/août/2004 10:57
par Dr. Dri
y'a pas moyen de le savoir avec GetModuleHandle_(nom_de_la_dll$) ?

Dri

Publié : ven. 27/août/2004 11:39
par Le Soldat Inconnu
visiblement, les librairies sont bien fermées mais windows les gardes quand même en mémoire d'après mes observations.
j'ai vu çaen faisant des tests avec des dll que j'ouvrais et fermais

Publié : ven. 27/août/2004 16:25
par Oliv
Le Soldat Inconnu a écrit :visiblement, les librairies sont bien fermées mais windows les gardes quand même en mémoire d'après mes observations.
j'ai vu çaen faisant des tests avec des dll que j'ouvrais et fermais
Dans ton post pour l'optimiseur de ram j'avais dis qu'il y a une veluer du registre à changer. Moi ça fonctionne très bien :D

Publié : ven. 27/août/2004 21:41
par Le Soldat Inconnu
oui, j'ai l'option dans TweakXP mais si tu connais la clé de registre à modifier , ça m'intéresse. on pourrait faire un petit prog automatique ;)

Publié : ven. 27/août/2004 22:11
par comtois
http://www.informatruc.com/supprimer_dll_xp.php

http://www.laboratoire-microsoft.org/t/1448/

Je n'ai pas testé , et il faudrait peut-être faire des recoupements avec les multiples sites qui parlent de ce sujet :)

Publié : ven. 27/août/2004 22:13
par Oliv
Ahh Google est ton ami :wink: , car on peut faire une recherche où la réponse est même sur la premiere page
sinon tu as
http://www.infos-du-net.com/modules/nse ... ce-15.html
http://membres.lycos.fr/shivash/Windows/DLL.htm
Ouvrez Regedit
Puis HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer
Créez une valeur DWORD du joli nom de AlwaysUnloadDll et donnez lui la valeur 1.


Ainsi, vous n'aurez plus de DLL inutilisées qui polluent votre mémoire...

Note : l'astuce fonctionne également avec AlwaysUnloadDll en clé
Voilà, bonne programation :D