Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15912] Re:그래픽카드 온도를 구하는 소스코드인데 에러가 납니다.
빌더(TWx) [builder] 166 읽음    2017-07-28 02:17
첫눈 님이 쓰신 글 :
: 사용하고 있는 PC에는 그래픽카드가 2개입니다.
: 하나는 내장그래픽으로 인텔이구요.
: 나머지 하나는 nvidia GeForce GTX 560 SE입니다.
:
: 모니터는 당연히 560SE에 꼽혀있구요.
:
: OS는 Windows7 64Bit구요.
:
: 그래픽카드 온도를 측정하기 위해 다음과 같은 소스코드를 구글링하여 퍼왔습니다.
:
:
: function NvidiaGpuTemp: Integer;
: type
:   NvCplGetThermalSettings = function(
:     nWindowsMonitorNumber: UINT; 
:     pdwCoreTemp, 
:     pdwAmbientTemp, pdwUpperlimit: PDWORD): BOOL; cdecl;
: var
:   hNvcpl: Hwnd;
:   GetThermalSettings: NvCplGetThermalSettings;
:   dwCoreTemp, dwAmbientTemp, dwUpperlimit: DWORD;
: begin
:   Result := 0;
: 
: 
:   hNvcpl := LoadLibrary('nvcpl.dll');
:   if hNvcpl <> 0 then
:     try
:       GetThermalSettings := GetProcAddress(hNvcpl,'NvCplGetThermalSettings');
:       if Assigned(GetThermalSettings) then
:         If GetThermalSettings(0, Addr(dwCoreTemp), Addr(dwAmbientTemp), 
:           Addr(dwUpperlimit)) then
:         begin
:          Result:= Integer(dwCoreTemp);
:         end;
:     finally
:       FreeLibrary(hNvcpl);
:     end;
: end;
: 
: procedure TForm1.Button1Click(Sender: TObject);
: begin
:    ShowMessage(InttoStr(NvidiaGpuTemp));
: end; 
: 

:
: 그리고 nvcpl.dll은  그래픽카드 드라이버를 설치하면
: C:\Windows\System32 폴더 안에 nvcpl.dll파일이 생성되어 그것을 사용하였습니다.
:
: 하지만 위 코드를 실행하면
:   hNvcpl := LoadLibrary('nvcpl.dll');
: 이 부분에서 에러가 발생합니다.
:
: 그래서 네이버에서 검색하여 어느 블로그에 올려진 64비트용 nvcpl.dll을 구하여 사용해 봤습니다.
: 이러자 이번엔
: GetThermalSettings(0, Addr(dwCoreTemp), Addr(dwAmbientTemp), Addr(dwUpperlimit))
: 여기서 False가 반환됩니다.
:
: GPU-Z.exe에서는 이상없이 그래픽카드 온도를 가져오는데
: 제 코드는 뭐가 잘못된건가요?
:
: 뭐가 잘못된 건가요?
:
:
:
:
: 참고로 NVidia에서 제공하고 메뉴얼에는 다음과 같이 나와 있습니다.
:
: NvCplGetThermalSettings
: Function
: Prototype
: BOOL CDECL NvCplGetThermalSettings
:  (IN UINT nWindowsMonitorNumber,
:  OUT DWORD* pdwCoreTemp,
:  OUT DWORD* pdwAmbientTemp,
:  OUT DWORD* pdwUpperLimit);
: Parameters In UINT nWindowsMonitorNumber -- The display number shown on
:  the Windows Display Properties->Settings page.
:  A value of 0 indicates the current primary Windows display device.
: DWORD* must be a valid pointer --
:  pdwCoreTemp -- GPU temperature in degrees Celsius.
:  pdwAmbientTemp -- Ambient temperature in degrees Celsius.
:  pdwUpperLimit -- Upper limit of the GPU temperature specification.
: Return Values True on success.
: False on failure.
:


답변:


NVIDIA 그래픽 카드가 없어서 직접 확인은 해 볼 수 없습니다만...
파일 첨부하니 확인해 보세요.

+ -

관련 글 리스트
15911 그래픽카드 온도를 구하는 소스코드인데 에러가 납니다. 첫눈 133 2017-07-27
15912     Re:그래픽카드 온도를 구하는 소스코드인데 에러가 납니다. 빌더(TWx) 166 2017-07-28
15913         Re:Re:잘되네요. 뭐가 잘못된건가요? 첫눈 143 2017-07-28
15914             Re:Re:Re:잘되네요. 뭐가 잘못된건가요? 빌더(TWx) 192 2017-07-28
15915                 Re:Re:Re:Re:감사합니다. 첫눈 157 2017-07-28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.