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é :
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 ?
Modifié en dernier par nicko510 le mer. 27 janv. 2010 00:27, modifié 1 fois.
En gros sa met ton script en pause pendant une durée X determiner en milliseconde
Cordialement Pop45
Veuillez agrée nos sentiment les plus distinguer, soyez assurer de mon entièr et amical collaboration, bien a vous pour toujours et a jamais dans l'unique but de servir l'espérance de votre satisfaction.
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
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.
$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
$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
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 ...