mirror of
https://github.com/moparisthebest/hexchat
synced 2025-02-12 13:20:11 -05:00
sysinfo: Add display resolution
This commit is contained in:
parent
36a8ba126c
commit
4f891e21b3
@ -26,6 +26,7 @@ char *sysinfo_backend_get_disk(void);
|
|||||||
char *sysinfo_backend_get_memory(void);
|
char *sysinfo_backend_get_memory(void);
|
||||||
char *sysinfo_backend_get_cpu(void);
|
char *sysinfo_backend_get_cpu(void);
|
||||||
char *sysinfo_backend_get_gpu(void);
|
char *sysinfo_backend_get_gpu(void);
|
||||||
|
char *sysinfo_backend_get_resolution (void);
|
||||||
char *sysinfo_backend_get_sound(void);
|
char *sysinfo_backend_get_sound(void);
|
||||||
char *sysinfo_backend_get_uptime(void);
|
char *sysinfo_backend_get_uptime(void);
|
||||||
char *sysinfo_backend_get_network(void);
|
char *sysinfo_backend_get_network(void);
|
||||||
|
@ -64,6 +64,7 @@ static hwinfo hwinfos[] = {
|
|||||||
{"memory", "Memory", sysinfo_backend_get_memory},
|
{"memory", "Memory", sysinfo_backend_get_memory},
|
||||||
{"storage", "Storage", sysinfo_backend_get_disk},
|
{"storage", "Storage", sysinfo_backend_get_disk},
|
||||||
{"vga", "VGA", sysinfo_backend_get_gpu},
|
{"vga", "VGA", sysinfo_backend_get_gpu},
|
||||||
|
{"display", "Display", sysinfo_backend_get_resolution, TRUE},
|
||||||
{"sound", "Sound", sysinfo_backend_get_sound, TRUE},
|
{"sound", "Sound", sysinfo_backend_get_sound, TRUE},
|
||||||
{"ethernet", "Ethernet", sysinfo_backend_get_network, TRUE},
|
{"ethernet", "Ethernet", sysinfo_backend_get_network, TRUE},
|
||||||
{"uptime", "Uptime", sysinfo_backend_get_uptime},
|
{"uptime", "Uptime", sysinfo_backend_get_uptime},
|
||||||
|
@ -42,6 +42,7 @@ typedef enum
|
|||||||
QUERY_WMI_CPU,
|
QUERY_WMI_CPU,
|
||||||
QUERY_WMI_VGA,
|
QUERY_WMI_VGA,
|
||||||
QUERY_WMI_HDD,
|
QUERY_WMI_HDD,
|
||||||
|
QUERY_WMI_RES,
|
||||||
} QueryWmiType;
|
} QueryWmiType;
|
||||||
|
|
||||||
void print_info (void);
|
void print_info (void);
|
||||||
@ -49,6 +50,7 @@ int get_cpu_arch (void);
|
|||||||
char *query_wmi (QueryWmiType mode);
|
char *query_wmi (QueryWmiType mode);
|
||||||
char *read_os_name (IWbemClassObject *object);
|
char *read_os_name (IWbemClassObject *object);
|
||||||
char *read_cpu_info (IWbemClassObject *object);
|
char *read_cpu_info (IWbemClassObject *object);
|
||||||
|
char *read_res_info (IWbemClassObject *object);
|
||||||
char *read_vga_name (IWbemClassObject *object);
|
char *read_vga_name (IWbemClassObject *object);
|
||||||
|
|
||||||
guint64 hdd_capacity;
|
guint64 hdd_capacity;
|
||||||
@ -117,6 +119,12 @@ sysinfo_backend_get_gpu (void)
|
|||||||
return g_strdup (vga_name);
|
return g_strdup (vga_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
sysinfo_backend_get_resolution (void)
|
||||||
|
{
|
||||||
|
return query_wmi (QUERY_WMI_RES);
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
sysinfo_backend_get_os (void)
|
sysinfo_backend_get_os (void)
|
||||||
{
|
{
|
||||||
@ -203,6 +211,9 @@ static char *query_wmi (QueryWmiType type)
|
|||||||
case QUERY_WMI_HDD:
|
case QUERY_WMI_HDD:
|
||||||
query = SysAllocString (L"SELECT Name, Capacity, FreeSpace FROM Win32_Volume");
|
query = SysAllocString (L"SELECT Name, Capacity, FreeSpace FROM Win32_Volume");
|
||||||
break;
|
break;
|
||||||
|
case QUERY_WMI_RES:
|
||||||
|
query = SysAllocString (L"SELECT CurrentHorizontalResolution, CurrentVerticalResolution, CurrentRefreshRate FROM Win32_VideoController");
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
goto release_queryLanguageName;
|
goto release_queryLanguageName;
|
||||||
}
|
}
|
||||||
@ -245,6 +256,10 @@ static char *query_wmi (QueryWmiType type)
|
|||||||
line = read_hdd_info (object);
|
line = read_hdd_info (object);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case QUERY_WMI_RES:
|
||||||
|
line = read_res_info (object);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -393,6 +408,42 @@ static char *read_vga_name (IWbemClassObject *object)
|
|||||||
return name_utf8;
|
return name_utf8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char *read_res_info (IWbemClassObject *object)
|
||||||
|
{
|
||||||
|
HRESULT hr;
|
||||||
|
VARIANT variant;
|
||||||
|
guint64 xres, yres, rate;
|
||||||
|
|
||||||
|
hr = object->lpVtbl->Get (object, L"CurrentHorizontalResolution", 0, &variant, NULL, NULL);
|
||||||
|
if (FAILED (hr))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
xres = variant_to_uint64 (&variant);
|
||||||
|
VariantClear (&variant);
|
||||||
|
|
||||||
|
hr = object->lpVtbl->Get (object, L"CurrentVerticalResolution", 0, &variant, NULL, NULL);
|
||||||
|
if (FAILED (hr))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
yres = variant_to_uint64 (&variant);
|
||||||
|
VariantClear (&variant);
|
||||||
|
|
||||||
|
hr = object->lpVtbl->Get (object, L"CurrentRefreshRate", 0, &variant, NULL, NULL);
|
||||||
|
if (FAILED (hr))
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
rate = variant_to_uint64 (&variant);
|
||||||
|
VariantClear (&variant);
|
||||||
|
|
||||||
|
return g_strdup_printf ("%"G_GUINT64_FORMAT"x%"G_GUINT64_FORMAT" (%"G_GUINT64_FORMAT"Hz)", xres, yres, rate);
|
||||||
|
}
|
||||||
|
|
||||||
static char *read_hdd_info (IWbemClassObject *object)
|
static char *read_hdd_info (IWbemClassObject *object)
|
||||||
{
|
{
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
@ -481,6 +532,9 @@ static guint64 variant_to_uint64 (VARIANT *variant)
|
|||||||
{
|
{
|
||||||
switch (V_VT (variant))
|
switch (V_VT (variant))
|
||||||
{
|
{
|
||||||
|
case VT_I4:
|
||||||
|
return (guint64)MAX(variant->intVal, 0);
|
||||||
|
|
||||||
case VT_UI8:
|
case VT_UI8:
|
||||||
return variant->ullVal;
|
return variant->ullVal;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user