첫눈 님이 쓰신 글 :
: 사용하고 있는 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 그래픽 카드가 없어서 직접 확인은 해 볼 수 없습니다만...
파일 첨부하니 확인해 보세요.