Page 1 sur 1

[..] Gestion de la mémoire

Posté : mar. 26 janv. 2010 18:09
par nicko510
Salut à tous,
y a-t-il un moyen pour limiter l'utilisation de la mémoire ?
Je fais un script qui dois être toujours actif et qui détecte lorsqu'un document est imprimé :

Code : Tout sélectionner

while 1
    $objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\cimv2")
    $colInstalledPrinters =  $objWMIService.ExecQuery("Select * from Win32_PrintJob Where Document <> ''")

    For $objPrinter in $colInstalledPrinters
        MsgBox(0,'',$objPrinter.Document)
    Next
WEnd
 
Le problème c'est qu'au fur est à mesure Autoit prend de plus en plus de mémoire dans le gestionnaire windows et je pense qu'à un moment ça va poser problème :p

Comment je peux faire ça s'il vous plait ?

Re: Gestion de la mémoire

Posté : mar. 26 janv. 2010 18:51
par pop45
sleep <==== Il y a pas mieux

Cherche dans l'aide

En gros sa met ton script en pause pendant une durée X determiner en milliseconde

Re: Gestion de la mémoire

Posté : mar. 26 janv. 2010 21:22
par timmalos
En effet, il faut deja que vous rajoutiez un sleep(1000) dans la boucle, ca resourdra deja les choses car vous n'avez pas besoin de tester plus d'une fosi par seconde l'utilisation de l'imprimante, mais ca n'explique pas pourquoi il consomme de plus en plus de mémoire. Il doit falloir relacher l'objet et il va vous falloir trouver comment, l'explication est peut etre dans le script ou vous avez trouvé votre code.

Cependant, merci d'editer le titre de votre message pour respecter les règles du forum. Sinon ce message sera envoyé à la corbeille.
Merci,
Tim

Re: [..] Gestion de la mémoire

Posté : mer. 27 janv. 2010 00:43
par nicko510
Désolé pour le titre :oops:

Voila où j'ai trouvé le code :
http://www.autoitscript.fr/forum/viewto ... t=imprimer

Effectivement le sleep ralenti l'utilisation de la mémoire, mais elle continue quand même de grimper. Ca augmente bien lorsqu'il y a une impression en cours (ça me parait normal), mais une fois terminée ça ne redescend pas.

Lorsque je démarre le script, il tourne vers 6000ko et pour chaque impression ça augmente quasiment de 1000ko.
Comme c'est pour un pc qui imprime souvent et qui n'est jamais éteins, je me dis que ça pourrait créer des soucis au bout du compte.

Re: [..] Gestion de la mémoire

Posté : mer. 27 janv. 2010 16:45
par Tlem
Je ne peut pas tester de là ou je suis, mais est-ce que ceci fonctionnerait mieux ?

Code : Tout sélectionner

$objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\cimv2")

while 1
    $colInstalledPrinters =  $objWMIService.ExecQuery("Select * from Win32_PrintJob Where Document <> ''")
    For $objPrinter in $colInstalledPrinters
        MsgBox(0,'',$objPrinter.Document)
    Next
    Sleep(1000)
WEnd
Ou

Code : Tout sélectionner

$objWMIService = ObjGet("winmgmts:\\" & @ComputerName & "\root\cimv2")
$colInstalledPrinters =  $objWMIService.ExecQuery("Select * from Win32_PrintJob Where Document <> ''")

while 1
    For $objPrinter in $colInstalledPrinters
        MsgBox(0,'',$objPrinter.Document)
    Next
    Sleep(1000)
WEnd

Re: [R] Gestion de la mémoire

Posté : ven. 26 févr. 2010 16:47
par nicko510
Salut,
Désolé pour le retard mais je n'avais pas vu qu'il y avait eu des réponses :p

Le 1er code de Tlem fonctionne ! Il fallait en effet sortir $objWMIService de la boucle. Par contre si j'utilise le 2è code, la msgbox n'apparait jamais ...

En tout cas merci pour votre aide.

Re: [..] Gestion de la mémoire

Posté : ven. 26 févr. 2010 17:58
par Tlem
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.