Kirjautuminen

Haku

Tehtävät

Koodit: VB6: Koneen muistimäärän hakeminen

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

Kommentit

tuomas [06.05.2004 17:45:40]

#

Fyysisen muistin määrä näkyi oikein kilotavuissa mutta heitti yhdellä megalla megatavuissa.

Niin niin.. ihan suotta alan naimaan pilkkua..

Bill Keltanen [07.05.2004 07:46:41]

#

Kiva, kiva..

sooda [07.05.2004 10:17:25]

#

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 :)

Linkku [07.05.2004 14:35:34]

#

Millä tämä kääntyy? Pistäkää nettiosote ja suora latauslinkki, koska en jaksa etsiä monia sivuja läpi.

mamaze [07.05.2004 15:27:12]

#

hyvä koodivinkki.

sooda [07.05.2004 15:39:46]

#

pitäis kääntyä: http://msdn.microsoft.com/vbasic/downloads/tools/cce/default.aspx

kayttaja-4976 [12.07.2006 21:44:11]

#

Michael Halvorsonhan väänsi tästä jonkun progressbaareilla toimivan muistimittarin...

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta