Avatar billede hbhansen Nybegynder
10. november 2001 - 19:57 Der er 7 kommentarer og
1 løsning

Systeminformation gennem c++ !! HASTER

Hejsa

Er der nogen der ligger inde med noget kode til c++ hvor man kan få information om systemet, f.eks. cpu, ram, grafikkort, osv. ??

TAK
Avatar billede dr.truti Nybegynder
11. november 2001 - 01:57 #1
Avatar billede borrisholt Novice
11. november 2001 - 09:55 #2
Jeg har noget Delphi kode .. kan det være til hjælp ?

jens B
Avatar billede hbhansen Nybegynder
11. november 2001 - 10:19 #3
Hej dr.truti

Helt iorden kode fra linket, tak skal du have.
Der findes vel ikke noget til cpu og grafik ?

borrishol, helst ikke delhpi da jeg endnu ikke kan kode idet ! ellers tal
Avatar billede hbhansen Nybegynder
11. november 2001 - 10:27 #4
Hejsa

Nu har jeg implementeret koden i mit program, men jeg bliver ved med at få følgende fejl, og jeg kan simpelhen ikke se hvor fejlen ligger, nogen der kan hjælpe mig !

Loaded \'C:\\WINNT\\System32\\ntdll.dll\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\KERNEL32.DLL\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\USER32.DLL\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\GDI32.DLL\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\SHELL32.DLL\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\ADVAPI32.DLL\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\rpcrt4.dll\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\shlwapi.dll\', no matching symbolic information found.
Loaded \'C:\\WINNT\\system32\\comctl32.dll\', no matching symbolic information found.
Avatar billede jpk Nybegynder
11. november 2001 - 15:19 #5
Dette kode viser hvordan man finder nogle info.
Jeg har anvendt MFC, så hvis du ikke gør det, skal der foretages et par ændringer...

    //Code to get system devices
    //Memory
    MEMORYSTATUS MS;
    GlobalMemoryStatus(&MS);
    m_AvailMem = MS.dwMemoryLoad;                    //percent of memory in use
    m_PhysMem = MS.dwTotalPhys/1048576;                //Mbytes of physical memory
    m_FreePhysMem = MS.dwAvailPhys/1048576;            //free physical memory Mbytes
    m_PageFile = MS.dwTotalPageFile/1048576;        //Mbytes of paging file
    m_FreePageFile = MS.dwAvailPageFile/1048576;    //free Mbytes of paging file
    m_AdrSpace = MS.dwTotalVirtual/1048576;            //user Mbytes of address space
    m_UserBytes = MS.dwAvailVirtual/1048576;        //free user Mbytes

    //Printers
    CString Printers;
    DWORD dwSize, dwPrinters;
    ::EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 5, NULL, 0, &dwSize, &dwPrinters);
    BYTE* pBuffer = new BYTE[dwSize];
    ::EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 5, pBuffer, dwSize, &dwSize, &dwPrinters);
    if(dwPrinters != 0)
    {
        PRINTER_INFO_5* pPrnInfo = (PRINTER_INFO_5*)pBuffer;
        for(UINT i=0; i<dwPrinters; ++i)
        {
            CString PrinterDevice = pPrnInfo->pPrinterName;
            PrinterDevice += \" at \";
            PrinterDevice += pPrnInfo->pPortName;
            m_PrinterList.AddString(PrinterDevice);
            ++pPrnInfo;
        }
    }
    delete[] pBuffer;

    //Graphics
    DEVMODE DM;
    ::EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &DM);
    DWORD Width = DM.dmPelsWidth;
    DWORD Height = DM.dmPelsHeight;
    DWORD BitsPerPix = DM.dmBitsPerPel;
    CString Display;
    Display.Format(\"%d x %d x %d\", Width, Height, BitsPerPix);
    m_CurrentGraphicsMode = Display;
    //All supported modes
    int i=0;
    while(::EnumDisplaySettings(NULL, i, &DM))
    {
        DWORD Width = DM.dmPelsWidth;
        DWORD Height = DM.dmPelsHeight;
        DWORD BitsPerPix = DM.dmBitsPerPel;
        //CString Name = DM.dmDeviceName;//returns \"\"!!!
        WORD ver = DM.dmDriverVersion;
        CString Display;
        Display.Format(\"%d x %d x %d\", Width, Height, BitsPerPix);
        m_SupportedModes.AddString(Display);
        ++i;
    }

    //Monitors/output
    DWORD bufsize, nrOfmonitors;
    ::EnumMonitors(NULL, 1, NULL, 0, &bufsize, &nrOfmonitors);
    BYTE* pMonitorBuffer = new BYTE[bufsize];
    ::EnumMonitors(NULL, 1, pMonitorBuffer, bufsize, &bufsize, &nrOfmonitors);
    if(nrOfmonitors != 0)
    {
        MONITOR_INFO_1* pMonInfo = (MONITOR_INFO_1*)pMonitorBuffer;
        for(UINT i=0; i<nrOfmonitors; ++i)
        {
            CString Monitor = pMonInfo->pName;
            m_Monitors.AddString(Monitor);
            ++pMonInfo;
        }
    }
    delete[] pMonitorBuffer;
   
    //Windows
    CString version;
    version.Format(\"%d.%d\", _winmajor, _winminor);
    m_WinVersion = version;
    m_Build = _osver;

    //Processor(s)
    SYSTEM_INFO SI;
    GetSystemInfo(&SI);
    m_NumOfProcessors = SI.dwNumberOfProcessors;
    m_ProcessorType = SI.dwProcessorType;
    WORD ProcessorLevel = SI.wProcessorLevel;
    DWORD mask = SI.dwActiveProcessorMask;
Avatar billede hbhansen Nybegynder
11. november 2001 - 15:23 #6
Damn, mange tak, skal du have, nu har jeg desværre accepteret et svar, men hvis du kender en måde hvorpå jeg kan give dig nogle point så skriv det lige.

Er der mulighed forat jeg kan få hele filen, med MFC ?
Avatar billede jpk Nybegynder
11. november 2001 - 15:30 #7
Hvis du vil give mig point for det, så skal du oprette et nyt spørgsmål og lade mig svare der...

Du kan så skrive din e-mail adresse, så sender jeg dig hele projektet.
Det er et lille dialogbaseret windows-program, der viser diverse systemoplysninger...
Avatar billede hbhansen Nybegynder
11. november 2001 - 15:31 #8
Ok, jeg opretter lige et ligende spørgsmål, så kig lige efter det!
Send filen til admin@webmascot.dk
Mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester