Défragmenteur de RAM

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Je suis pris ce week-end...
J'envoie un code lundi.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

OK merci.
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Comme promis, un début de code pour examiner la mémoire.
Cela nécessite évidemment de compulser la documentation (site MSDN library de microsoft, et divers programmes)
sur les DLLs Windows

La procédure privilege (inutile ici, mais parfois...) sert à acquérir tous les privilèges. S'avère nécessaire pour accéder à certains processus,
qui ne peuvent par exemple pas être stoppés avec TerminateProcess_ sans l'acquisition de ceux-ci.
Sur l'exemple, le programme cherche l'id du processus word, s'il existe, et affiche les zones mémoires utilisées
par celui-ci. (uniquement celles assignées, pas réservées)

Code : Tout sélectionner

Declare privilege(pid)
privilege(GetCurrentProcessId_())

Structure PROCESSENTRY32 
    dwSize.l 
    cntUsage.l 
    th32ProcessID.l 
    th32DefaultHeapID.l 
    th32ModuleID.l 
    cntThreads.l 
    th32ParentProcessID.l 
    pcPriClassBase.l 
    dwFlags.l 
    szExeFile.b[260] 
EndStructure 

If OpenLibrary (0,"kernel32.dll")=0
	MessageRequester("","Echec initialisation")
	end
Endif

    s=CallFunction(0,"CreateToolhelp32Snapshot",274,0)
    If s
        DefType.PROCESSENTRY32 Proc32 
        Proc32\dwSize = SizeOf(PROCESSENTRY32) 
           If CallFunction(0,"Process32First",s, @Proc32) 
            if lcase(peeks(@Proc32\szExeFile))="winword.exe"
		idwin=proc32\th32ProcessID
	    endif
            While CallFunction (0, "Process32Next", s, @Proc32) 
            if lcase(peeks(@Proc32\szExeFile))="winword.exe"
		idwin=proc32\th32ProcessID
	    endif
            Wend
           EndIf
     EndIf 

if idwin=0:end:endif
debug "id word="+str(idwin)

Structure systeminfo
    dwOemID.l
    pagesize.l
    minaddress.l
    maxaddress.l
    dwActiveProcessorMask.l
    dwNumberOfProcessors.l
    dwProcessorType.l
    dwAllocationGranularity.l
    dwReserved.l
EndStructure

info.systeminfo
GetSystemInfo_(@info)

Structure meminfo
    baseaddress.l
    base.l
    allocprotect.l
    regionsize.l
    state.l
    protect.l
    type.l
EndStructure

debug "page size  "+Str(info\pagesize)
debug "min address  "+Str(info\minaddress)
debug "max address  "+Str(info\maxaddress)
debug "Word:"

ch=OpenProcess_($1F0FFF,1,idwin)
mem=0:bloc=0
pos=info\minaddress
pinfo.meminfo
While pos<info\maxaddress
VirtualQueryEx_(ch,pos,@pinfo,SizeOf(meminfo))

If pinfo\state=$1000
mem=mem+pinfo\regionsize
debug str(pos)+" à "+str(pos+pinfo\regionsize-1)+" : réservé"
if pinfo\type=$20000
debug "non partagée"
endif
EndIf
pos=pos+pinfo\regionsize
Wend
debug "total mémoire utilisée : "+str(mem)







Procedure privilege(pid)

ph=OpenProcess_($1F0FFF,1,pid)
OpenProcessToken_(ph,$20,@h)

Dim p.s(29)
p(0)="SeAssignPrimaryTokenPrivilege"
p(1)="SeAuditPrivilege"
p(2)="SeBackupPrivilege"
p(3)="SeChangeNotifyPrivilege"
p(4)="SeCreateGlobalPrivilege"
p(5)="SeCreatePagefilePrivilege"
p(6)="SeCreatePermanentPrivilege"
p(7)="SeCreateTokenPrivilege"
p(8)="SeDebugPrivilege"
p(9)="SeEnableDelegationPrivilege"
p(10)="SeImpersonatePrivilege"
p(11)="SeIncreaseBasePriorityPrivilege"
p(12)="SeIncreaseQuotaPrivilege"
p(13)="SeLoadDriverPrivilege"
p(14)="SeLockMemoryPrivilege"
p(15)="SeMachineAccountPrivilege"
p(16)="SeManageVolumePrivilege"
p(17)="SeProfileSingleProcessPrivilege"
p(18)="SeRemoteShutdownPrivilege"
p(19)="SeRestorePrivilege"
p(20)="SeSecurityPrivilege"
p(21)="SeShutdownPrivilege"
p(22)="SeSyncAgentPrivilege"
p(23)="SeSystemEnvironment"
p(24)="SeSystemProfilePrivilege"
p(25)="SeSystemtimePrivilege"
p(26)="SeTakeOwnershipPrivilege"
p(27)="SeTcbPrivilege"
p(28)="SeUndockPrivilege"
p(29)="SeUnsolicitedInputPrivilege"

Structure LI
low.l
high.l
EndStructure

Structure luidandattributes
pluid.LI
attrib.l
EndStructure

Structure privileges
count.l
privilege.luidandattributes
EndStructure

shut.LI
result=1
For i=0 To 29
LookupPrivilegeValue_(0,@p(i),@shut)

newprivilege.privileges
newprivilege\count=1
newprivilege\privilege\attrib=2
newprivilege\privilege\pluid\low=shut\low
newprivilege\privilege\pluid\high=shut\high

result=result*AdjustTokenPrivileges_(h,0,newprivilege,SizeOf(privileges),0,0)
Next i

ProcedureReturn result
EndProcedure
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Il se passe rien chez moi en mode debug!

:(
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

:?: Marche très bien chez moi (PB v3.91 beta1). (Evidemment, sur l'exemple, il faut avoir lancé Word...)
Quelqu'un d'autre pour essayer?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ca à l'air de fonctionner chez moi aussi avec PB 3.90!
En tout cas, ça renvoie tout un tas de valeurs.

Chris :)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

M'intéresse beaucoup ce truc.

Ca relie sans doute aux travaux d'interfaces qui sont maintenant très documentés sur le forum EN (en particulier par aXend)

Je mets ça de côté pour jeudi ouvendredi ... mais c'est un bon travail à mon humble avis (AMHA qu'on dis aussi AMHO et en anglais IMHO that's it !)

Slts
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Tiens justement depuis le temps que je le lis cet IMHO sur le forum anglais ,ça veut dire quoi ?
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

In my humble Opinion ...

Dans mon humble opinion quoi !

Et mon Opinel Perce Ognoin tu traduis ça comment ?

L'Opinel étant spécifiquement thiernoise !
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ahah :) merci

Ce mot mystérieux m'intriguait depuis un moment :)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Petit tut des anglicismes abrégés

Message par fweil »

Allez je commence la liste :

IMHO déjà donné (voir ci-dessus)

AFAIK : As Far As I Know
BTW : By The Way (par là-même)
RN : Right Now (pour l'instant)
QRN ( ancien idiome francophone pour dire qu'il y a des parasites dans la transmission ce qui n'a rien à voir mais tant pis fallait pas commencer)

et par extension :

du QRN sur Bretzelbourg : lire la BD de Franquin

Comme quoi dans le genre y a rien de mieux que les gars d'chez nous !

Et pis y "allo QC ici CQ" ! (Voir le film Daryl)

C'est quand même con ce monde qui développe des trucs à 43 lignes de code pour exprimer un truc qui sera ultérieurement réduit à un acronyme que tout le monde comprendra !

Le pire c'est des trucs comme 'Pas avec votre poncho Monsieur Ouille' ou encore 'Ca c'est de la boisson d'hommes' (respectivement Les visiteurs et Les tontons flingueurs).

Faut-y citer à chaque le chimpanzé qui a eu l'idée avant les primates que nous sommes encore ...

Bon j'aurai du faire un lien sur le Off moi ... avec mon truc de Ouf !

Ouf ? (Otherwise understand failure)

arf ...
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

Au fait, pour fweil qui fréquente beaucoup le forum anglais : hardy(fr) = tonnelier (en)
(Au moment où je me suis inscrit sur le forum français, je relisais un passage de l'excellent Theory of Numbers de Hardy&Wright...)
fweil
Messages : 505
Inscription : dim. 16/mai/2004 17:50
Localisation : Bayonne (64)
Contact :

Message par fweil »

Des lauriers pour Hardy (jeu de mots bi-lingues) !
Mon avatar reproduit l'image de 4x1.8m présentée au 'Salon international du meuble de Paris' en janvier 2004, dans l'exposition 'Shades' réunisant 22 créateurs autour de Matt Sindall. L'original est un stratifié en 150 dpi.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ahahaha , il est déchainé ce soir :)



Bon moi je vais me coucher .
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

hardy a écrit : je relisais un passage de l'excellent Theory of Numbers de Hardy&Wright...)
il donne les chiffre gagnant du loto ?? 8O :D
Répondre