[..] Réduction consommation mémoire

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
papy46
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 30 sept. 2015 20:58
Status : Hors ligne

[..] Réduction consommation mémoire

#1

Message par papy46 »

Bonjour,

Le script suivant me consomme environ 80 Mo de mémoire juste pour afficher une page html ... pensez-vous que cela est normal ?

Code : Tout sélectionner

#cs =========================================================================================================

   Script AutoIt
   =============

      Auteur ... : ...
      Date ..... : 2015/10/03
      Titre .... : Portail Intranet

#ce =========================================================================================================


; === PROPRIETES EXE ========================================================================================
#pragma compile(ProductName,         intranet)
#pragma compile(FileDescription,     Module portail / Intr@net)
#pragma compile(ProductVersion,      2015.10.3.0)
#pragma compile(FileVersion,         2015.10.3.0)
#pragma compile(CompanyName,         MPS)
#pragma compile(LegalCopyright,      Copyright © 2015 MPS)
#pragma compile(LegalTrademarks,     Tous droits réservés)
#pragma compile(Icon,                intranet.ico) ; Icône du fichier exécutable
#pragma compile(UPX,                 false)
#pragma compile(Compression,         1)
; ===========================================================================================================


; VARIABLES VERSION
$version_annee = 2015
$version_mois = 10
$version_jour = 3
$version_build = 0


#NoTrayIcon

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <IE.au3>
#include <Constants.au3>
#include <TrayConstants.au3>


Opt("GUIResizeMode", $GUI_DOCKAUTO)


; CREATION DU TRAYMENU
Opt("TrayMenuMode",3)
TraySetClick(8)
Local $TrayMenuExit = TrayCreateItem("Quitter le portail intranet")
TraySetState(2)


; CREATION DE LA FENETRE UTILISATEUR
Local $oIE = _IECreateEmbedded()
$windows = GUICreate("Intr@net", 1100, 600, 20, 20, $WS_OVERLAPPEDWINDOW + $WS_CLIPSIBLINGS + $WS_CLIPCHILDREN)
$MenuFichier = GUICtrlCreateMenu("Fichier")
$MenuFichierItemHide = GUICtrlCreateMenuItem("Réduire dans la zone de notification", $MenuFichier)
$MenuFichierItemExit = GUICtrlCreateMenuItem("Quitter le portail intranet", $MenuFichier)
$MenuHelp = GUICtrlCreateMenu("Aide")
$MenuHelpItemAbout = GUICtrlCreateMenuItem("A propos", $MenuHelp)
GUISetIcon("intranet.ico", -1)
GUICtrlCreateObj($oIE, 0, 0, 1100, 580)
GUISetState(@SW_SHOW)


; ADRESSE DU SITE INTRANET
_IENavigate($oIE, "http://intranet")


; REDUCTION MEMOIRE ?
$pid = ProcessExists(@ScriptName)
_ReduceMemory($pid)


While 1
   Sleep(1)

   Local $iMsg = GUIGetMsg()

   Select
      Case $iMsg = $MenuFichierItemHide
         GUISetState(@SW_HIDE)
         TraySetState(1)
         TraySetToolTip ("Intr@net")

      Case $iMsg = $MenuFichierItemExit
         $Passwd = InputBox("Autorisation requise", "Saisir le mot de passe administrateur :", "", "•", "", 130)

         If $Passwd == "exit" Then ; Case sensitive
            ExitLoop
         EndIf

      Case $iMsg = $MenuHelpItemAbout
         MsgBox(64+8192, "A propos ...", "     Intr@net" & @CRLF & "     Portail version " & $version_annee & "." & $version_mois & "." & $version_jour & "." & $version_build & @CRLF & "" & @CRLF & "     Copyright (C) 2015 MPS")

      Case $iMsg = $GUI_EVENT_CLOSE
         GUISetState(@SW_HIDE)
         TraySetState(1)
         TraySetToolTip ("Intr@net")
         ;ExitLoop
   EndSelect

   ; GESTION DU TRAYMENU
   Switch TrayGetMsg()
      Case $TRAY_EVENT_PRIMARYUP
         GUISetState(@SW_SHOW)

      Case $TrayMenuExit
         $Passwd = InputBox("Autorisation requise", "Saisir le mot de passe administrateur :", "", "•", "", 130)

         If $Passwd = "exit" Then
            ExitLoop
         EndIf
   EndSwitch

   Sleep(1)
WEnd


GUIDelete()

Exit


; FONCTION REDUCTION OCCUPATION MEMOIRE
Func _ReduceMemory($i_PID = -1)
    If $i_PID <> -1 Then
        Local $ai_Handle = DllCall("kernel32.dll", 'int', 'OpenProcess', 'int', 0x1f0fff, 'int', False, 'int', $i_PID)
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', $ai_Handle[0])
        DllCall('kernel32.dll', 'int', 'CloseHandle', 'int', $ai_Handle[0])
    Else
        Local $ai_Return = DllCall("psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)
    EndIf
    Return $ai_Return[0]
EndFunc
 
Je vous remercie.

Cordialement.

Papy46
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Réduction consommation mémoire

#2

Message par orax »

Ça dépendra de la page. Si je change la page par le code ci-dessous, j'ai moins de 10 Mo utilisés alors qu'avec d'autres pages j'étais monté à 50 Mo.

Code : Tout sélectionner

_IENavigate($oIE, "http://perdu.com/")
Et j'éviterais d'utiliser EmptyWorkingSet().
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre