C/Visual C - Programa que imprima capacidades del equipo

Filtrado por el usuario: valentin
<<>>
Filtrado por el usuario 'valentin' (Eliminar fitro)
 
Vista:

Programa que imprima capacidades del equipo

Publicado por Milton (1 intervención) el 26/03/2001 19:31:41
Necesito saber como hacer un programa que me de la capacidad utilizada y libre del disco duro de la computadora, memoria RAM utilizada y libre, número de puertos, número de drives y la opción de mostrar un directorio con los atributos de sus archovos.

Medio me urge
Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Obtener información del sistema y mostrar atributos de archivos

Publicado por Alejandro (913 intervenciones) el 11/09/2024 00:05:46
Para obtener la capacidad utilizada y libre del disco duro, la memoria RAM utilizada y libre, el número de puertos y el número de unidades de disco, puedes utilizar las funciones y estructuras proporcionadas por el sistema operativo. A continuación, te proporciono un ejemplo de cómo obtener esta información utilizando C++ en Visual Studio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <iostream>
#include <windows.h>
#include <psapi.h>
 
void GetDiskSpace()
{
    ULARGE_INTEGER totalBytes, freeBytes, usedBytes;
    if (GetDiskFreeSpaceEx(NULL, &freeBytes, &totalBytes, &usedBytes))
    {
        std::cout << "Capacidad total del disco: " << totalBytes.QuadPart / (1024 * 1024) << " MB" << std::endl;
        std::cout << "Espacio libre en el disco: " << freeBytes.QuadPart / (1024 * 1024) << " MB" << std::endl;
        std::cout << "Espacio utilizado en el disco: " << usedBytes.QuadPart / (1024 * 1024) << " MB" << std::endl;
    }
}
 
void GetMemoryUsage()
{
    MEMORYSTATUSEX memoryStatus;
    memoryStatus.dwLength = sizeof(memoryStatus);
    if (GlobalMemoryStatusEx(&memoryStatus))
    {
        std::cout << "Memoria RAM total: " << memoryStatus.ullTotalPhys / (1024 * 1024) << " MB" << std::endl;
        std::cout << "Memoria RAM libre: " << memoryStatus.ullAvailPhys / (1024 * 1024) << " MB" << std::endl;
        std::cout << "Memoria RAM utilizada: " << (memoryStatus.ullTotalPhys - memoryStatus.ullAvailPhys) / (1024 * 1024) << " MB" << std::endl;
    }
}
 
void GetPortCount()
{
    DWORD portCount = 0;
    if (GetNumberOfConsoleInputEvents(&portCount))
    {
        std::cout << "Número de puertos: " << portCount << std::endl;
    }
}
 
void GetDriveCount()
{
    DWORD driveCount = GetLogicalDrives();
    std::cout << "Número de unidades de disco: " << __popcnt(driveCount) << std::endl;
}
 
void ShowDirectoryAttributes(const std::string& directory)
{
    WIN32_FIND_DATAA fileData;
    HANDLE hFind = FindFirstFileA((directory + "\\*").c_str(), &fileData);
    if (hFind != INVALID_HANDLE_VALUE)
    {
        do
        {
            std::cout << "Nombre: " << fileData.cFileName << std::endl;
            std::cout << "Atributos: " << fileData.dwFileAttributes << std::endl;
            std::cout << std::endl;
        } while (FindNextFileA(hFind, &fileData));
        FindClose(hFind);
    }
}
 
int main()
{
    GetDiskSpace();
    GetMemoryUsage();
    GetPortCount();
    GetDriveCount();
    ShowDirectoryAttributes("C:\\Directorio"); // Reemplaza "C:\\Directorio" con el directorio que deseas mostrar
 
    return 0;
}

Este programa utiliza las funciones `GetDiskFreeSpaceEx`, `GlobalMemoryStatusEx`, `GetNumberOfConsoleInputEvents`, `GetLogicalDrives` y `FindFirstFileA` para obtener la información requerida. Asegúrate de incluir las bibliotecas `windows.h` y `psapi.h` en tu proyecto.

Espero que esto te sea útil. ¡Buena suerte con tu proyecto, Milton!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar