winsys cosmetics and extensions

This commit is contained in:
Berke Viktor 2011-11-29 01:10:57 +01:00
parent d010c4ff1b
commit 6f019e63f1
1 changed files with 64 additions and 14 deletions

View File

@ -29,6 +29,29 @@
static xchat_plugin *ph; /* plugin handle */ static xchat_plugin *ph; /* plugin handle */
static int
getCpuArch (void)
{
OSVERSIONINFOEX osvi;
SYSTEM_INFO si;
osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX);
GetVersionEx ((LPOSVERSIONINFOW) &osvi);
GetSystemInfo (&si);
if (si.wProcessorArchitecture == 9)
{
return 64;
}
else
{
return 86;
}
}
#if 0
/* use WMI instead, wProcessorArchitecture displays current binary arch instead OS arch anyway */
static char * static char *
getOsName (void) getOsName (void)
{ {
@ -120,7 +143,7 @@ getOsName (void)
return winver; return winver;
} }
#if 0 /* x86-only, SDK-only, use WMI instead */ /* x86-only, SDK-only, use WMI instead */
static char * static char *
getCpuName (void) getCpuName (void)
{ {
@ -264,13 +287,18 @@ getWmiInfo (int mode)
return buffer; return buffer;
} }
if (mode) switch (mode)
{ {
hres = pSvc->ExecQuery (_bstr_t ("WQL"), _bstr_t ("SELECT * FROM Win32_VideoController"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); case 0:
} hres = pSvc->ExecQuery (_bstr_t ("WQL"), _bstr_t ("SELECT * FROM Win32_OperatingSystem"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);
else break;
{ case 1:
hres = pSvc->ExecQuery (_bstr_t ("WQL"), _bstr_t ("SELECT * FROM Win32_Processor"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator); hres = pSvc->ExecQuery (_bstr_t ("WQL"), _bstr_t ("SELECT * FROM Win32_Processor"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);
break;
case 2:
hres = pSvc->ExecQuery (_bstr_t ("WQL"), _bstr_t ("SELECT * FROM Win32_VideoController"), WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnumerator);
break;
} }
if (FAILED (hres)) if (FAILED (hres))
@ -290,7 +318,18 @@ getWmiInfo (int mode)
break; break;
} }
VARIANT vtProp; VARIANT vtProp;
hr = pclsObj->Get (L"Name", 0, &vtProp, 0, 0); switch (mode)
{
case 0:
hr = pclsObj->Get (L"Caption", 0, &vtProp, 0, 0);
break;
case 1:
hr = pclsObj->Get (L"Name", 0, &vtProp, 0, 0);
break;
case 2:
hr = pclsObj->Get (L"Name", 0, &vtProp, 0, 0);
break;
}
WideCharToMultiByte (CP_ACP, 0, vtProp.bstrVal, -1, buffer, SysStringLen (vtProp.bstrVal)+1, NULL, NULL); WideCharToMultiByte (CP_ACP, 0, vtProp.bstrVal, -1, buffer, SysStringLen (vtProp.bstrVal)+1, NULL, NULL);
VariantClear (&vtProp); VariantClear (&vtProp);
} }
@ -306,12 +345,23 @@ getWmiInfo (int mode)
static int static int
printInfo (char *word[], char *word_eol[], void *user_data) printInfo (char *word[], char *word_eol[], void *user_data)
{ {
xchat_printf (ph, "OS:\t%s\n", getOsName ()); if (xchat_list_int (ph, NULL, "type") >= 2)
xchat_printf (ph, "CPU:\t%s (%s)\n", getWmiInfo (0), getCpuMhz ()); {
xchat_printf (ph, "RAM:\t%s\n", getMemoryInfo ()); /* xchat_commandf (ph, "ME * WinSys - system details *");
xchat_printf (ph, "VGA:\t%s\n", getWmiInfo (1)); xchat_commandf (ph, "ME ***************************"); */
/* will work correctly for up to 50 days, should be enough */ xchat_commandf (ph, "ME * Client: XChat-WDK %s (x%d)", xchat_get_info (ph, "wdk_version"), getCpuArch ());
xchat_printf (ph, "Uptime:\t%.2f Hours\n", (float) GetTickCount() / 1000 / 60 / 60); xchat_commandf (ph, "ME * OS: %s", getWmiInfo (0));
xchat_commandf (ph, "ME * CPU: %s (%s)", getWmiInfo (1), getCpuMhz ());
xchat_commandf (ph, "ME * RAM: %s", getMemoryInfo ());
xchat_commandf (ph, "ME * VGA: %s", getWmiInfo (2));
/* will work correctly for up to 50 days, should be enough */
xchat_commandf (ph, "ME * Uptime: %.2f Hours", (float) GetTickCount() / 1000 / 60 / 60);
}
else
{
/* print standard error message */
xchat_printf (ph, "No channel joined. Try /join #<channel>");
}
return XCHAT_EAT_XCHAT; return XCHAT_EAT_XCHAT;
} }