nVidia Grafikkraten Temperatur Check

    • Offizieller Beitrag

    Hallo

    Dieses Tool ist für alle nVidia Grafikkarten.
    Dieses Tool überprüft die Temperatur von der Grafikkarte. Wenn sie zu hoch wird, färbt sich die GUI erst gelb, und wenn es dann kritisch wird, wird die GUI rot und der Lüfter gibt vollgas (100%)

    Damit die Geschwindigkeit des Lüfters regulierbar ist, muss nVidia nTune runtergeladen werden (https://autoit.de/www.nvidia.de)
    Die Temperaturauslesung funktioniert schon mit dem ganz gewöhnlichen nVidia Treiber.

    Spoiler anzeigen
    [autoit]

    ;By GtaSpider - Oct, 2008
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GuiOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    Global $iHot = 75; If temperature becomes more than 75, the GUI going to be yellow
    Global $iTooHot = 85 ;If temperature becomes more than 85, graphiccard will be cool down
    Global $iTimeToCoolDown = 10 ;10 Seconds cooldown

    [/autoit] [autoit][/autoit] [autoit]

    Global $iOldTemp = 0
    Global $hNvCplDLL, $hnVsublibDLL

    [/autoit] [autoit][/autoit] [autoit]

    ;PathDeclare
    Global $nvcpldll = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\MediaCenterTray\NvCpl.dll", "FullPath")
    Global $nvsulibdll = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\nTune", "NVSUProfilePath")
    $nvsulibdll = StringLeft($nvsulibdll, StringInStr($nvsulibdll, "\", -1, -1)) & "nvsulib.dll"

    [/autoit] [autoit][/autoit] [autoit]

    ;If not exist..
    If Not FileExists($nvcpldll) Then Exit MsgBox(16, "", $nvcpldll & " doesn't exists")
    If Not FileExists($nvsulibdll) Then
    MsgBox(48, "", $nvsulibdll & " doesn't exists!" & @CRLF & "The speed is not regulareable!" & @CRLF & "Download nTune on http://www.nvidia.com")
    $nvsulibdll = False
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;DLLs
    Global $hNvCplDLL = DllOpen("Nvcpl.dll")
    If $nvsulibdll Then Global $hnVsublibDLL = DllOpen("c:\programme\nvidia corporation\ntune\nvsulib.dll")
    If $nvsulibdll Then DllCall($hnVsublibDLL, "none", "RestoreGpuCoolerSettingsDll", "int", False);Set fan to automatic

    [/autoit] [autoit][/autoit] [autoit]

    ;GUI
    GUICreate("", 200, 20, -1, -1, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit");If ESC pushed exit
    GUISetBkColor(0x00ff00)

    [/autoit] [autoit][/autoit] [autoit]

    $hLab = GUICtrlCreateLabel("", 0, 3, 200, 20, 1, $GUI_WS_EX_PARENTDRAG);Dragable
    GUICtrlSetTip(-1, "Drag me!")
    GUICtrlSetBkColor(-1, -2)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $iTemp = DllCall($hNvCplDLL, "int:cdecl", "NvCplGetThermalSettings", "int", 0, "long*", '', "long*", "", "long*", "")
    $iTemp = Number($iTemp[2])
    If $iTemp <> $iOldTemp Then
    GUICtrlSetData($hLab, $iTemp & " °C")
    If $iTemp >= $iTooHot Then
    ConsoleWrite("!Too Hot, " & $iTemp & " °C" & @CRLF)
    GUISetBkColor(0xff0000)
    _CoolDown()
    ElseIf $iTemp >= $iHot Then
    ConsoleWrite("-Hot, " & $iTemp & " °C" & @CRLF)
    GUISetBkColor(0xffff00)
    Else
    ConsoleWrite("+Normal, "&$iTemp&" °C" & @CRLF)
    GUISetBkColor(0x00ff00)
    EndIf
    $iOldTemp = $iTemp
    EndIf
    Sleep(1000)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _CoolDown()
    If Not $nvsulibdll Then Return ConsoleWrite("!WARNING: Too hot but could not regular the temperature" & @CRLF)
    $aRetDll = DllCall($hnVsublibDLL, "none", "SetGpuCoolerLevelDll", "int", 0, "int", 100);Set fan to 100%
    Sleep($iTimeToCoolDown * 1000)
    $aRetDll = DllCall($hnVsublibDLL, "none", "RestoreGpuCoolerSettingsDll", "int", False);Set fan to automatic
    EndFunc ;==>_CoolDown

    [/autoit] [autoit][/autoit] [autoit]

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit] [autoit][/autoit] [autoit]

    Func OnAutoItExit()
    DllClose($hnVsublibDLL)
    DllClose($hNvCplDLL)
    EndFunc ;==>OnAutoItExit

    [/autoit]

    Hoffe es kann jemand gebrauchen :thumbup:
    Achso, bevor ich es vergesse: Die GUI lässt sich per MausDrag einfach verschieben.

    Mfg Spider

    Edit: HotFix

  • In Zeile 21 muss es statt "$nvcpldll", "$nvsulibdll" heißen und in Zeile 75 führt das fehlen dieser DLL dann zu einem Fehler/Abbruch, da die Variable "$hnVsublibDLL" dann nicht gesetzt wurde.

    Edit: Zeile 75 sollte heißen "If IsDeclared("hnVsublibDLL") Then DllClose($hnVsublibDLL)"

    Ansonsten schöne Idee !

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (4. Oktober 2008 um 17:57)