Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



WMI, Win32_DesktopMonitor, nenajde další monitory

Seznam témat     Nová odpověď

Přihlásit se     Registrace     Zapomenuté heslo

WMI, Win32_DesktopMonitor, nenajde další monitory

Autor: RadekChalupa

21:31:26 13.08.2010

Zdravím,
chci přes WMI získat seznam a informace o připojených monitorech, ale dostanu se jen na primární monitor. Zde je výsek kódu:

[code]
hr = CoCreateInstance(CLSID_WbemLocator, 0, CLSCTX_INPROC_SERVER,
IID_IWbemLocator, (void**)&this->wbemLocator);
if (hr != S_OK)
_com_raise_error(hr);
hr = this->wbemLocator->ConnectServer(_bstr_t(L"ROOT\\CIMV2"), NULL, NULL,
0, NULL, 0, 0, &this->wbemServices);
if (hr != S_OK)
_com_raise_error(hr);

IWbemClassObject* wbCO = NULL;
ULONG vystPocet = 0;
hr = this->wbemServices->ExecQuery(bstr_t("WQL"),
bstr_t("SELECT * FROM Win32_DesktopMonitor"),
WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &this->enumerator);
if (hr != S_OK)
_com_raise_error(hr);
hr = this->enumerator->Reset();
VARIANT vtProp;
while(true)
{
hr = this->enumerator->Next(WBEM_INFINITE, 1, &wbCO, &vystPocet);
if (!SUCCEEDED(hr))
break;
text = L"";
// indexSeznamu = this->seznamWBCO.Add(wbCO);
VariantInit(&vtProp);
hr = wbCO->Get(L"Description", 0, &vtProp, 0, 0);
if (hr == S_OK)
{
if (vtProp.vt != VT_NULL)
{
text.Format(L"Název: %s", vtProp.bstrVal);
}
}
hr = wbCO->Get(L"ScreenWidth", 0, &vtProp, 0, 0);
if (hr == S_OK)
{
if (vtProp.vt != VT_NULL)
{
text.Format(L"šířka: %d", vtProp.uiVal);
}
}
VariantClear(&vtProp);
}
[/code]

V cyklu while při druhém průchodu next vrátí S_FALSE a také vystPocet je 0.
Upřesním že např. pro načítání paměťových modulů (Win32_PhysicalMemory) najde oobdobný kód oba moduly, ale zde jen primární monitor (ověřeno odpovídající hodnotou ScreenWidth).
Mám 2 různé monitory připojené k jedné VGA kartě (jeden přes digitání výstp, druhý redukcí k HDMI) a stejná aplikace při vyčíslení monitorů pomocí EnumDisplayMonitors najde oba monitory. Jsou samozřejmě oba zapnuté.

Netušíte někdo kde je zakopaný pes?

Citovat příspěvek

 

 

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: