Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по использованию WMI-классов. 
:(
    Опции темы
AndreySol
Дата 11.4.2005, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



ОС - WinMe.
Компилятор - MSVC++ 6.0 + SP5.
Подскажите, кто знает, можно ли добраться с помощью WMI до такой информации BIOS как температура процессора и обороты кулера процессора.
Если можно - то желательно с примером кода.

PM MAIL   Вверх
jorkug
Дата 12.4.2005, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 21.3.2005

Репутация: нет
Всего: 1



PM MAIL   Вверх
IEZ
Дата 14.4.2005, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 10.2.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 3



В самое начало stdafx.h засунь #define _WIN32_DCOM
и должно быть _WIN32_WINNT >= 0x0400



Код

#pragma comment (lib, "Wbemuuid")
#include "COMDEF.H"
#include "Wbemidl.h"

void CHiDlg::OnBnClickedOk()
{

        CoInitialize (NULL);

        CoInitializeSecurity(NULL, -1, NULL, NULL,
                RPC_C_AUTHN_LEVEL_CONNECT,
                RPC_C_IMP_LEVEL_IMPERSONATE,
                NULL, EOAC_NONE, 0);

        HRESULT hr = 0;
        IWbemLocator *pWbemLocator = NULL;

        if(SUCCEEDED(hr = CoCreateInstance (CLSID_WbemLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (void**) &pWbemLocator)))
        {       
                IWbemServices *pServices = NULL;
                if(SUCCEEDED(hr = pWbemLocator->ConnectServer(_bstr_t(L"root\\cimv2"), NULL, NULL, NULL, 0, 
                        NULL, NULL, &pServices)))
                {
                        IEnumWbemClassObject * pEnum = NULL;
                        hr = pServices->CreateInstanceEnum(_bstr_t(L"Win32_BIOS"), 0, NULL, &pEnum);
                        if(pEnum)
                        {
                                ULONG uReturned = 1;
                                while(uReturned == 1)
                                {
                                        IWbemClassObject * pClassObject = NULL;

                                        hr = pEnum->Next(7000, 1, &pClassObject, &uReturned);

                                        if (SUCCEEDED(hr) && (uReturned == 1))
                                        {
                                                VARIANT v;
                                                VariantInit(&v);                                        
                                                CIMTYPE vtType = 0;
                                                LONG lFlavor = 0L;

                                                pClassObject->Get (L"Description", 0, &v, &vtType, &lFlavor);
                                                if(v.vt == VT_BSTR)
                                                {
                                                        WCHAR buf[1024] = L"";
                                                        DWORD dwLen = *((DWORD*)v.bstrVal - 1)/sizeof(WCHAR);
                                                        wcsncpy(buf, v.bstrVal, dwLen); 
                                                        *(buf + dwLen) = L'\0';

                                                        ::MessageBoxW (0, buf, L"", MB_OK);
                                                }

                                                VariantClear(&v);

                                                pClassObject->Release ();

                                        }
                                }//end while
                                pEnum->Release ();
                        }
                        pServices->Release ();
                }

                pWbemLocator->Release ();
        }

        CoUninitialize ();
}


Вместо "Win32_BIOS" можешь подставлять имена других WMI-классов

P.S. Код сделан на VC++



--------------------
"Нужно делать так, как нужно, а как не нужно, делать не нужно" (с) Винни-Пух.
PM MAIL WWW ICQ   Вверх
AndreySol
Дата 18.4.2005, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 19.6.2004

Репутация: 1
Всего: 1



Вы проще скажите - да или нет, а то у меня SDK пока нет.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.