통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
무선 인터넷(Mobile) 포럼마을 입니다.
  마을등급 무선 인터넷(Mobile)   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 조갑열 주민 2289 since 2006-12-29
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
마을 게시판
등록된 마을 게시판이
없습니다.
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 VS2008 PC CUP온도 실시간 체크에 관한 질문  | HDML 2016-08-04 오후 4:18:38
cuinanzhe 번호: 32216 추천:0  / 읽음:1,911

PC CPU 온도를 실시간으로 체크하는 기능을 구현 할려고 합니다.

아래 소스와 같이 WMI를 이용하여 온도 불러오기 까지 성공했는데,

문제는 한번 밖에 못 읽어 오더군요.

 

고수님들 아래 소스 보시고 답장 부탁 드립니다.

C++ vs2008을 사용 합니다.

 


void CcpuTemperatureDlg::OnBnClickedButton1()
{
 // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다

 LONG temp;
 CString strTemp;
 GetDlgItem(IDC_STT_CPU_TEMPERATURE)->SetWindowText(_T(""));

 GetCpuTemperature(&temp);
 strTemp.Format(_T("%.2f"),(temp / 10 - 273.15));
 GetDlgItem(IDC_STT_CPU_TEMPERATURE)->SetWindowText(strTemp);
 return ;

}


HRESULT CcpuTemperatureDlg::GetCpuTemperature(LPLONG pTemperature)
{
 if (pTemperature == NULL)
  return E_INVALIDARG;

 *pTemperature = -1; 
 
 HRESULT ci = CoInitialize(NULL);
 HRESULT hr = CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL);
 
 if (SUCCEEDED(hr))
 {
  IWbemLocator *pLocator;
  hr = CoCreateInstance(CLSID_WbemAdministrativeLocator, NULL, CLSCTX_INPROC_SERVER, IID_IWbemLocator, (LPVOID*)&pLocator);
  if (SUCCEEDED(hr))
  {
   IWbemServices *pServices;
   BSTR ns = SysAllocString(L"root\\WMI");
   hr = pLocator->ConnectServer(ns, NULL, NULL, NULL, 0, NULL, NULL, &pServices);
   pLocator->Release();
   SysFreeString(ns);
   if (SUCCEEDED(hr))
   {
    BSTR query = SysAllocString(L"SELECT * FROM MSAcpi_ThermalZoneTemperature");
    BSTR wql = SysAllocString(L"WQL");
    IEnumWbemClassObject *pEnum;
    hr = pServices->ExecQuery(wql, query, WBEM_FLAG_RETURN_IMMEDIATELY | WBEM_FLAG_FORWARD_ONLY, NULL, &pEnum);
    SysFreeString(wql);
    SysFreeString(query);
    pServices->Release();
    if (SUCCEEDED(hr))
    {
     IWbemClassObject *pObject;
     ULONG returned;
     hr = pEnum->Next(WBEM_INFINITE, 1, &pObject, &returned);
     pEnum->Release();
     if (SUCCEEDED(hr))
     {
      BSTR temp = SysAllocString(L"CurrentTemperature");
      VARIANT v;
      VariantInit(&v);
      hr = pObject->Get(temp, 0, &v, NULL, NULL);
      pObject->Release();
      SysFreeString(temp);
      if (SUCCEEDED(hr))
      {
       *pTemperature = V_I4(&v);
      }
      VariantClear(&v);
     }
    }
   }
   if (ci == S_OK)
   {
    CoUninitialize();
   }
  }
 }
 return hr;
}

 

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.