Occupation mémoire grandie sans raison

Résolu
cs_Tioneb
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015
- 17 mars 2007 à 13:42
cs_Tioneb
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015
- 17 mars 2007 à 16:03
Salut,

Je suis en train de faire un programme qui se chargera (entr'autre) de bloquer l'accès à certains programmes (pour éviter que les enfants jouent de trop!). Donc j'ai mis un timer à 10ms et à chaque cycle il regarde si un programme non autorisé est lancé et si c'est le cas, il fait un killprocess dessus. Mon problème est le suivant: Dans taskmgr je vois que lorsque le timer est en route l'occupation du fichier d'échange (dans l'onglet performance) augmente à vue d'oeil et au bout d'un certains temps windows est obligé d'en augmenter sa taille. Et c'est un sérieux problème puisque le programme doit tourner en tache de fond!

Voici le code du timer:

Dim TabBloque() As String, iTAB As Long
Private Sub TempoABloquer_Timer()
    TabBloque() = Split(ProgABloquer, "|")
    For iTAB = 1 To UBound(TabBloque())
        If IsApplicationRunning(TabBloque(iTAB)) = True Then
            KillProcessus TabBloque(iTAB)
        End If
        DoEvents
    Next iTAB
End Sub

Dans la variable ProgABloquer il y a les paramètres pour savoir s'il faut être actif ou pas et les programmes à bloquer (ex: 1|calc.exe|notepad.exe|trucmuche.exe ). Ensuite pour chaque prog je regarde s'il est démarré et si oui, je le kill.

Si quelqu'un sait pourquoi ça me fait ça, qu'il n'hésite pas.
Merci d'avance

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/

4 réponses

cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
17 mars 2007 à 15:13
Ca s'écrit tout simplement :
erase TabBloque

10 ms ne sert absolument à rien : ton timer n'aura pas cette précision (60 ms mini il me semble, ce qui est déjà très très petit !).
3
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
17 mars 2007 à 14:46
fait un erase à la fin de ta sub pour libérer la mémoire du tableau.

De plus, ca sert absolument à rien de mettre un timer à 10 ms : il se déclenchera pas toutes les 10 ms, et tu va bouffer du processeur pour rien !

Il vaut mieux le mettre à 1 s, ce qui sera déjà bien suffisant pour bloquer des processus !
0
cs_Tioneb
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

17 mars 2007 à 14:55
je ne connais pas la fonction erase; comment tu l'écris?
et pour les 10ms c'est pour que ça fasse plus joli => je voulais pas que le prog se lance, on le voit et il disparait. Mais bon, s'il faut ça pour que ça marche normalement je suis d'accord.

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
0
cs_Tioneb
Messages postés
193
Date d'inscription
dimanche 16 décembre 2001
Statut
Membre
Dernière intervention
29 juillet 2015

17 mars 2007 à 16:03
Merci beaucoup; je viens de faire des tests et ta solution fonctionne, mais j'ai dû augmenter aussi l'interval du timer. Mais bon, comme je l'ai dis si ça ne peut marcher que comme ça, ça me va. Encore merci

PS: pour infos j'ai mis le timer à 300ms

--------------------------------------------------------------------------
Visitez mon site sur http://bp-software.ifrance.com/
0