, hvordan en liste over alle minder sider, der er tildelt af alle accesible processer, skabe en form med et tryk på en knap, en treeview, navn treeview tvwprocesslist.navn på den btnprocesslist.,,,, bruger windows;,,, procedure tform1. btnprocesslistclick (afsender: tobject);,, var jeg, l: heltal, pid: thandle;,, meminfo: memory_basic_information;,, memstart: pointer,,, memsize: heltal, s attr: snor,,, totuse: heltal,, lpmsgbuf: pchar;,, pn, pidn, l: ttreenode;,, begynder, btnprocesslist. mulighed for: = falske,, tvwprocesslist. poster.,,, pn: = tvwprocesslist.items.addfirst (- 0, og denne computer);,,, -: = 0 2000 gøre //, begynder //process_query_information, pid: = openprocess (process_all_access {process_vm_operation eller process_query_information eller process_vm_write}, falske - 4), hvis pid < > 0, begynder, //add treenode:,,, pidn: = tvwprocesslist.items.addchild (pn, inttostr (- * 4 (pid)), memstart: = 0, totuse: = 0, l: = virtualqueryex (pid,,, memstart,,,,, meminfo, 7 (memory_basic_information), mens (l = 7 (memory_basic_information), begynder, hvis anvendelse. afsluttes så, udpassage, hvis meminfo. state = mem_commit så, begynder, totuse: = totuse + meminfo. regionsize;,, attr: = '«, hvis (0 < > meminfo.protect og page_noaccess) så, attr: = attr +' adgang,,,hvis (0 < > meminfo.protect og page_readonly) så, attr: = attr +'readonly «, hvis (0 < > meminfo.protect og page_readwrite) så, attr: = attr +'readwrite «, hvis (0 < > meminfo.protect og page_writecopy) og, attr: = attr +'writecopy «, hvis (0 < > meminfo.protect og page_execute) så, attr: = attr +'execute;,,, hvis (0 < > meminfo.protect og page_execute_read) så, attr: = attr +'execute_read ",,, hvis (0 < > meminfo.protect og page_execute_readwrite),,,attr: = attr +'execute_readwrite «, hvis (0 < > meminfo.protect og page_execute_writecopy) så, attr: = attr +'execute_writecopy «, hvis (0 < > meminfo.protect og page_guard) så, attr: = attr +'guard «, hvis (0 < > meminfo.protect og page_nocache) så, attr: = attr +'nocache;,,, l = tvwprocesslist.items.addchild (pidn,,, - format ('attr:% d:% s base:% d størrelse:% d ',,, [meminfo.protect, attr, heltal (meminfo. baseaddress), meminfo. regionsize]), anvendelse. processmessages,,,,,,heltal (memstart): = heltal (meminfo. baseaddress) + meminfo. regionsize;,, heltal (memstart): = heltal (memstart) + memsize; l: = virtualqueryex (pid,,, memstart,,,,, meminfo, 7 (memory_basic_information),,,,, pidn. tekst: = format ('pid:% d tildelt:% d), [i * 4, totuse]);,,,,,,,,, closehandle (pid);,,,,, btnprocesslist. mulighed for: = sandt,,,,,,,,,, explanetion: vinduer proces id er altid en gang 4.så, få adgang til proces, nr. 8, vil få adgang til samme proces som klare 9, 10 og 11, er, at vi simpelthen sløjfe en liste over mulige id. der er bedre måder at gøre dette på, men som ikke er omfattet af denne artikel, og denne metode virker fint.,, hvis vi har openened en proces, vi liste den første side.vi tilføjer størrelsen af denne side for start - adresse på næste side for at få fat i, ikke alle sider er tildelt, kan vi kontrollere det med mem_commit mærke,.,, hvis side er begået, vi undersøger de attributter, og tilføje et træ node.,, det kan tage et stykke tid (navnlig, at alle disse træ knudepunkter.), efter vi er færdige, er vi tæt på den processhandle med closehandle.vær helt sikker på, at gøre det her!!!ikke i håndtaget, vil føre til en sjov resultater, og hvis du gør det her flere gange, du kan ende med at genstarte systemet sincew alt bliver langsomt.
en liste over alle sider af alle processer, der minder accesible
Next Page:- bytte og virtuelle hukommelse