添加系统信息查看器代码

This commit is contained in:
zsyg
2025-06-28 11:58:36 +08:00
committed by GitHub
parent dcecf58f23
commit 021e89e3a4
24 changed files with 835 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
#ifndef ABOUT_DIALOG_H
#define ABOUT_DIALOG_H
#include <windows.h>
void show_about_dialog(HWND hParent);
#endif // ABOUT_DIALOG_H

View File

@@ -0,0 +1,10 @@
#ifndef CONFIG_H
#define CONFIG_H
#define APP_NAME "系统信息查看器"
#define APP_VERSION "1.0"
#define MAX_DISKS 26
#define MAX_ADAPTERS 10
#define UPDATE_INTERVAL 5000 // 5秒
#endif // CONFIG_H

View File

@@ -0,0 +1,15 @@
#ifndef DISK_INFO_H
#define DISK_INFO_H
#include <windows.h>
typedef struct {
char driveLetter;
DWORD64 totalBytes;
DWORD64 freeBytes;
char fileSystem[32];
} DiskInfo;
void get_disk_info(DiskInfo* disks, int* count);
#endif // DISK_INFO_H

View File

@@ -0,0 +1,15 @@
#ifndef LOGGING_H
#define LOGGING_H
#include <windows.h>
typedef enum {
LOG_DEBUG,
LOG_INFO,
LOG_WARNING,
LOG_ERROR
} LogLevel;
void log_message(LogLevel level, const char* format, ...);
#endif // LOGGING_H

View File

@@ -0,0 +1,9 @@
#ifndef MAIN_WINDOW_H
#define MAIN_WINDOW_H
#include <windows.h>
#include "system_info.h"
void update_main_window(HWND hWnd, SystemInfo* sysInfo);
#endif // MAIN_WINDOW_H

View File

@@ -0,0 +1,23 @@
#ifndef NETWORK_INFO_H
#define NETWORK_INFO_H
#include <windows.h>
#include <iphlpapi.h>
// 确保GetAdaptersInfo函数声明
#ifndef _IPHLPAPI_
#define _IPHLPAPI_
DWORD GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen);
#endif
typedef struct {
char adapterName[MAX_ADAPTER_NAME_LENGTH + 4];
char description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
char ipAddress[16];
char macAddress[18];
ULONG speed; // in Mbps
} NetworkAdapterInfo;
void get_network_adapters(NetworkAdapterInfo* adapters, int* count);
#endif // NETWORK_INFO_H

View File

@@ -0,0 +1,26 @@
#ifndef PERFORMANCE_INFO_H
#define PERFORMANCE_INFO_H
#include <windows.h>
#include <pdh.h>
// 确保PDH函数声明
#ifndef _PDH_H_
#define _PDH_H_
PDH_STATUS PdhOpenQueryA(LPCSTR szDataSource, DWORD_PTR dwUserData, PDH_HQUERY* phQuery);
PDH_STATUS PdhAddCounterA(PDH_HQUERY hQuery, LPCSTR szFullCounterPath, DWORD_PTR dwUserData, PDH_HCOUNTER* phCounter);
PDH_STATUS PdhCollectQueryData(PDH_HQUERY hQuery);
PDH_STATUS PdhGetFormattedCounterValue(PDH_HCOUNTER hCounter, DWORD dwFormat, LPDWORD lpdwType, PPDH_FMT_COUNTERVALUE pValue);
#endif
typedef struct {
DWORD cpuUsage; // CPU使用率百分比
DWORD memoryUsage; // 内存使用率百分比
DWORD processesCount; // 进程数量
DWORD threadsCount; // 线程数量
DWORD handlesCount; // 句柄数量
} PerformanceInfo;
void get_performance_info(PerformanceInfo* perfInfo);
#endif // PERFORMANCE_INFO_H

View File

@@ -0,0 +1,11 @@
#ifndef RESOURCE_H
#define RESOURCE_H
#define IDI_MAIN_ICON 101
#define IDR_MAIN_MENU 102
#define IDM_EXIT 1001
#define IDM_ABOUT 1002
#define IDM_SHOW_INFO 1003
#endif // RESOURCE_H

View File

@@ -0,0 +1,21 @@
#ifndef SYSTEM_INFO_H
#define SYSTEM_INFO_H
#include <windows.h>
typedef struct {
char cpuName[256];
DWORD cpuCores;
DWORD cpuThreads;
MEMORYSTATUSEX memoryStatus;
SYSTEM_INFO systemInfo;
OSVERSIONINFOEX osVersion;
} SystemInfo;
// 初始化系统信息
void init_system_info(SystemInfo* sysInfo);
// 创建主窗口
int create_main_window(HINSTANCE hInstance, SystemInfo* sysInfo, UINT codePage);
#endif // SYSTEM_INFO_H

View File

@@ -0,0 +1,13 @@
#ifndef SYSTEM_TRAY_H
#define SYSTEM_TRAY_H
#include <windows.h>
#define WM_TRAYICON (WM_USER + 1)
#define ID_TRAYICON 100
void create_tray_icon(HWND hWnd, HICON hIcon);
void update_tray_icon(HWND hWnd, HICON hIcon, LPCTSTR tooltip);
void remove_tray_icon(HWND hWnd);
#endif // SYSTEM_TRAY_H

View File

@@ -0,0 +1,18 @@
#ifndef UTILS_H
#define UTILS_H
#include <windows.h>
// 安全释放内存
#define SAFE_FREE(ptr) if (ptr) { free(ptr); ptr = NULL; }
// 宽字符转多字节字符串
char* wchar_to_mb(const wchar_t* wstr);
// 多字节字符串转宽字符
wchar_t* mb_to_wchar(const char* str);
// 获取当前时间字符串
char* get_current_time_string();
#endif // UTILS_H

View File

@@ -0,0 +1,16 @@
#ifndef WINDOW_UTILS_H
#define WINDOW_UTILS_H
#include <windows.h>
#include "system_info.h"
// 窗口过程函数
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
// 创建主窗口
int create_main_window(HINSTANCE hInstance, SystemInfo* sysInfo, UINT codePage);
// 注册窗口类
BOOL register_window_class(HINSTANCE hInstance);
#endif // WINDOW_UTILS_H