Informações do hardware - Linguagem C/C++

main.html
#include <windows.h>
#include <stdio.h>

#define BTN_BUSCA 1

void Controles(HWND);

static HWND c1, c2, c3, c4, c5, c6, c7;

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) {
    SYSTEM_INFO siSysInfo;
    GetSystemInfo(&siSysInfo); 
    switch(msg) {
        case WM_CREATE:
            Controles(hwnd);
            return 0;
        case WM_COMMAND:
            if(LOWORD(wP)==BTN_BUSCA) {
            	static char v1[50],v2[50],v3[50],v4[50],v5[50],v6[50],v7[50];
                sprintf(v1, "OEM ID: %u", siSysInfo.dwOemId);
                sprintf(
                    v2, "Number of processors: %u",
                    siSysInfo.dwNumberOfProcessors
                );
                sprintf(v3, "Page size: %u", siSysInfo.dwPageSize);
                sprintf(v4, "Processor type: %u", siSysInfo.dwProcessorType);
                sprintf(
                    v5, "Minimum application address: %lx",
                    siSysInfo.lpMinimumApplicationAddress
                );
                sprintf(
                    v6, "Maximum application address: %lx",
                    siSysInfo.lpMaximumApplicationAddress
                );
                sprintf(
                    v7, "Active processor mask: %u",
                    siSysInfo.dwActiveProcessorMask
                );
                SetWindowText(c1, v1);
                SetWindowText(c2, v2);
                SetWindowText(c3, v3);
                SetWindowText(c4, v4);
                SetWindowText(c5, v5);
                SetWindowText(c6, v6);
                SetWindowText(c7, v7);
            }
            return 0;
        case WM_DESTROY: {
            PostQuitMessage(0);
            break;
        }
		
        default:
            return DefWindowProc(hwnd, msg, wP, lP);
    }
    return 0;
}

void Controles(HWND hwnd) {
    CreateWindow(
        TEXT("button"),TEXT("Getting Hardware Information"),
        WS_VISIBLE | WS_CHILD | WS_BORDER,
        20, 20, 250, 20,
        hwnd, (HMENU) BTN_BUSCA, NULL, NULL
    );
    c1 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 60, 250, 20,
        hwnd, NULL, NULL, NULL
    );
    c2 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 100, 250, 20,
        hwnd, NULL, NULL, NULL
    );
    c3 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 140, 250, 20,
        hwnd, NULL, NULL, NULL
    );
    c4 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 180, 250, 20,
        hwnd, NULL, NULL, NULL
    );
    c5 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 220, 250, 20,
        hwnd, NULL, NULL, NULL
    );
    c6 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 260, 250, 20,
        hwnd, NULL, NULL, NULL
    );
    c7 = CreateWindow(
        TEXT("edit"), TEXT(""),WS_VISIBLE|WS_CHILD|WS_DISABLED,
        20, 300, 250, 20,
        hwnd, NULL, NULL, NULL
    );
}

int WINAPI WinMain(HINSTANCE hI, HINSTANCE hPI, LPSTR lpCmdLine, int iCS) {
    WNDCLASSEX wc; /* A properties struct of our window */
    HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */
    MSG msg; /* A temporary location for all messages */

    memset(&wc,0,sizeof(wc));
    wc.cbSize        = sizeof(WNDCLASSEX);
    wc.lpfnWndProc   = WndProc;
    wc.hInstance     = hI;
    wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = GetSysColorBrush(COLOR_MENUHILIGHT);
    wc.lpszClassName = "WindowClass";
    wc.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    wc.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);

    if(!RegisterClassEx(&wc)) {
        MessageBox(
            NULL, "Window Registration Failed!",
            "Error!", MB_ICONEXCLAMATION | MB_OK
        );
        return 0;
    }

    hwnd = CreateWindowEx(
        WS_EX_CLIENTEDGE, "WindowClass", "Programação para Windows",
        WS_VISIBLE | WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, /* x */
        CW_USEDEFAULT, /* y */
        310, /* width */
        385, /* height */
        NULL, NULL, hI, NULL
    );

    if(hwnd == NULL) {
        MessageBox(
            NULL, "Window Creation Failed!",
            "Error!", MB_ICONEXCLAMATION | MB_OK
        );
        return 0;
    }

    while(GetMessage(&msg, NULL, 0, 0) > 0) {
        TranslateMessage(&msg);
        DispatchMessage(&msg); /* Send it to WndProc */
    }
    return msg.wParam;
}

Comentários