Kirjoittaja: sooda
Kirjoitettu: 04.05.2004 – 10.07.2015
Tagit: koodi näytille, vinkki
Tietokoneen muistin määrän (fyysisen ja virtuaalisen sekä sivutustiedostossa olevan) saa selville WinAPI-funktiolla GlobalMemoryStatus. Tämä ohjelma kertoo määrät tavuina, kilotavuina, megatavuina ja gigatavuina sekä prosentteina. Tosi hyödykäs!
Binääri: http://sooda.dy.fi/foo/memoori.exe
formille
Private Sub Form_Load() Dim muisti As MEMORYSTATUS 'muistipalikka apikutsua varten Show 'esiin AutoRedraw = True 'tämä pitää tehdä aina :P Move Left, Top, 15 * 700, 15 * 250 'sopivan kokoiseksi Font = "Courier New" 'fontti tasalevyiseksi, helpompi lukea tätä Dim yht(2) As Long, vapaana(2) As Long, käytössä(2) As Long 'näin selvitään vähemmällä koodilla Dim selite(2) As String selite(0) = "Fyysinen muisti" selite(1) = "Sivutiedosto" selite(2) = "Virtuaalinen muisti" Do 'monitoroidaan ikuisesti kunnes ohjelma loppuu GlobalMemoryStatus muisti 'haetaan muistitiedot 'setataan muistin arvot taulukkoihin... yht(0) = muisti.dwTotalPhys yht(1) = muisti.dwTotalPageFile yht(2) = muisti.dwTotalVirtual vapaana(0) = muisti.dwAvailPhys vapaana(1) = muisti.dwAvailPageFile vapaana(2) = muisti.dwAvailVirtual käytössä(0) = yht(0) - vapaana(0) käytössä(1) = yht(1) - vapaana(1) käytössä(2) = yht(2) - vapaana(2) Cls 'vanhat tekstit vek DoEvents 'ettei ohjelma tilttaa For i = 0 To 2 'printataan eri muistin osat Print selite(i) 'minkä muistipalikan info 'näitä tuskin tarvitsee selittää :) Print "Yhteensä: " & kerro(yht(i)) & "." Print "Vapaana: " & kerro(vapaana(i)) & " eli " & _ Round(vapaana(i) / yht(i) * 100, 2) & " prosenttia." Print "Käytössä: " & kerro(käytössä(i)) & " eli " & _ Round(käytössä(i) / yht(i) * 100, 2) & " prosenttia." Print Next s = Timer 'aloitusaika Do 'loopataan tyhjää ettei tekstit vilkkuisi ikävästi DoEvents Loop Until s + 2 < Timer 'tehdään eimitään kunnes kaksi sekkaa on mennyt Loop End Sub Function kerro(mitä) 'kertoo mitä:n tavuissa, kiloissa, megoissa ja gigoissa kerro = mitä & " tavua eli " & _ mitä \ 1024 & " kiloa eli " & _ mitä \ 1024 \ 1024 & " megaa eli " & _ Round(mitä / 1024 / 1024 / 1024, 2) & " gigaa" End Function Private Sub Form_Unload(Cancel As Integer) End 'häivytään, muuten formi menisi piiloon mutta ohjelma jäisi silti päälle 'looppaamaan form_load:in do-loop:iin End Sub
motuuliin
Declare Sub GlobalMemoryStatus Lib "KERNEL32" (lpBuffer As MEMORYSTATUS) Type MEMORYSTATUS dwLength As Long dwMemoryLoad As Long dwTotalPhys As Long dwAvailPhys As Long dwTotalPageFile As Long dwAvailPageFile As Long dwTotalVirtual As Long dwAvailVirtual As Long End Type
Fyysisen muistin määrä näkyi oikein kilotavuissa mutta heitti yhdellä megalla megatavuissa.
Niin niin.. ihan suotta alan naimaan pilkkua..
Kiva, kiva..
Tuomas, taitaa olla joku pyöristysvirhe tai sitten meitä kaikkia huijataan ja muistia on aina yksi mega liian vähän, se heittää kaikissa noin. Jos siihen lisäisi yhden niin kun muistia olisi nolla niin sitä olisikin yksi :)
Millä tämä kääntyy? Pistäkää nettiosote ja suora latauslinkki, koska en jaksa etsiä monia sivuja läpi.
hyvä koodivinkki.
Michael Halvorsonhan väänsi tästä jonkun progressbaareilla toimivan muistimittarin...