J'ai une documentation obtenue sur le site de nvidia concernant les fonctions contenues dans la DLL nvclp.dll.
Dans cette doc, j'ai ca:
<HR>
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.
<HR>
J'ai essayé de l'utiliser dans VB, je ai donc mis dans un module:
Public Declare Function NvCplGetThermalSettings Lib "nvcpl.dll" (ByVal nWindowsMonitorNumber As Long, _
ByRef pdwCoreTemp As Long, _
ByRef pdwAmbientTemp As Long, _
ByRef pdwUpperLimit As Long) As Long
Seulement, quand je l'appelle, j'ai une erreur m'indiquant que je n'ai pas respecté la convention d'appel de la procédure.
Où me suis-je trompé ?
salut,
tu t'es peut-être trompé dans le fait que c'est un Get.
autrement dit, tu dois avoir un type quelque part, genre
private type tNvidiaThermal
pdwCoreTemp As Long
pdwAmbientTemp As Long
pdwUpperLimit As Long As Long
end type
pour déclarer
Public Declare Function NvCplGetThermalSettings Lib "nvcpl.dll" _
(ByVal nWindowsMonitorNumber As Long, _
ByRef pdwValuesCoreTemp As tNvidiaThermal) As Long
PCPT > je ne vois aucune structue à passer ici, seulement 4 params 32 bits dont les 3 derniers sont des pointeurs (Byref en VB).
Par contre il est impossible de s'en servir direct en VB car ne respecte pas le standard d'appel API (__stdcall), la fonction demande que ce soit l'appelant qui dépile les params, ce que VB ne fera pas.
Ok c'est clair.
Il va donc falloir que je :
- trouve un compilateur C sous windows
- fasse le code source d'une dll, qui en plus appelle une autre dll (et avec mes compétences en C ca va pas être trivial ^^)
Merci Darksidious pour l'IDE C++.
Par contre je galere un peu pour la réalisation de la dll, quelqu'un aurait un bon exemple d'importation d'une fonction d'une dll quand on a son prototype mais pas le .lib ni le .h de la dll ?
ensuite LoadLibray sur la dll nvidia, GetProcAddress sur le nom de la fonction
NVGETTHERM pfunc;
hdll = LoadLibray(nomDllNvidiaIci);
if(!hdll) PAS BON ON SORT
pfunc = GetProcAddress(hdll, "NomFonctionNvidia");
if(!pfunc) PAS BON ON SORT