一款显示网速、系统利用的软件
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

TrayS.h 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. #pragma once
  2. #include "resource.h"
  3. #include "function.h"
  4. #include <Commdlg.h>
  5. #include <Oleacc.h>
  6. #include <winsock2.h>
  7. #include <Iphlpapi.h>
  8. #include <Tlhelp32.h>
  9. #include <dwmapi.h>
  10. //WINRING0
  11. #include "OlsDef.h"
  12. #include "OlsApiInit.h"
  13. //ATIGPU
  14. #include "adl_sdk.h"
  15. #define MAX_LOADSTRING 100
  16. #define MAX_TEXT 2048
  17. #define WM_IAWENTRAY WM_USER+8//通知栏消息
  18. #define WM_TRAYS WM_USER+8888
  19. extern "C" WINUSERAPI BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
  20. //窗口图标结构
  21. typedef HANDLE HTHUMBNAIL;
  22. typedef HTHUMBNAIL* PHTHUMBNAIL;
  23. typedef struct _WINDOW_INFO
  24. {
  25. HICON hIcon;//图标
  26. // TCHAR szFileName[MAX_PATH];//文件名
  27. TCHAR szWindowTitle[MAX_PATH];//窗口标题
  28. //非显示项目
  29. // TCHAR szFilePath[MAX_PATH];//文件路径
  30. HWND hWnd;//窗口句柄
  31. BOOL bForegorund;//是否焦点
  32. BOOL bIconic;//是否最小化
  33. BOOL bTopMost;//是否置顶
  34. BOOL bHide;
  35. // bool bDesktopItem;//「デスクトップ」である
  36. // bool bCancelItem;//「キャンセル」である
  37. BOOL bUWPApp;//UWPApp
  38. HWND hUICoreWnd;//UWPApp的Windows.UI.Core.CoreWindow子窗口
  39. // HTHUMBNAIL hThumbnail;
  40. }WINDOW_INFO, * LPWINDOW_INFO;
  41. HANDLE g_hHeapWindowInfo;
  42. int g_iWindowCount = 0;
  43. LPWINDOW_INFO g_WindowInfo;
  44. HWND hTaskIcon=NULL;
  45. HWND hThumbnail = NULL;
  46. HTHUMBNAIL hThumb=NULL;
  47. HWND hThumbWnd = NULL;
  48. HWND hThumbUWP = NULL;
  49. int iTaskIconXY;
  50. int iTaskIconWidth=48;
  51. HICON hThumbIcon[14];
  52. ULONG_PTR ulToken;
  53. int IconSize;
  54. HRESULT(WINAPI* pDwmRegisterThumbnail)(HWND, HWND, PHTHUMBNAIL);
  55. HRESULT(WINAPI* pDwmUnregisterThumbnail)(HTHUMBNAIL);
  56. HRESULT(WINAPI* pDwmUpdateThumbnailProperties)(HTHUMBNAIL, const DWM_THUMBNAIL_PROPERTIES*);
  57. HRESULT(WINAPI* pDwmQueryThumbnailSourceSize)(HTHUMBNAIL, PSIZE);
  58. void AddItem(LPWINDOW_INFO lpWindowInfo)
  59. {
  60. bool bFirstTime = g_iWindowCount == 0;
  61. WINDOW_INFO* pTmp = NULL;
  62. if (bFirstTime)pTmp = (WINDOW_INFO*)HeapAlloc(g_hHeapWindowInfo, HEAP_ZERO_MEMORY, (++g_iWindowCount) * sizeof(WINDOW_INFO));
  63. else pTmp = (WINDOW_INFO*)HeapReAlloc(g_hHeapWindowInfo, HEAP_ZERO_MEMORY, g_WindowInfo, (++g_iWindowCount) * sizeof(WINDOW_INFO));
  64. g_WindowInfo = pTmp;
  65. g_WindowInfo[g_iWindowCount - 1] = *lpWindowInfo;
  66. return;
  67. }
  68. /////////////////////////////////////////////自定义结构
  69. typedef struct _TRAFFIC
  70. {
  71. DWORD in_bytes;
  72. DWORD out_bytes;
  73. DWORD in_byte;
  74. DWORD out_byte;
  75. PWCHAR FriendlyName;
  76. PCHAR AdapterName;
  77. WCHAR IP4[16];
  78. }TRAFFIC;
  79. typedef struct _PROCESSMEMORYUSAGE
  80. {
  81. WCHAR szExe[25];
  82. DWORD dwProcessID;
  83. SIZE_T dwMemUsage;
  84. }PROCESSMEMORYUSAGE;
  85. typedef struct _PROCESSCPUUSAGE
  86. {
  87. WCHAR szExe[25];
  88. DWORD dwProcessID;
  89. float fCpuUsage;
  90. }PROCESSCPUUSAGE;
  91. typedef struct _PROCESSTIME
  92. {
  93. DWORD dwProcessID;
  94. LARGE_INTEGER g_slgProcessTimeOld;
  95. }PROCESSTIME;
  96. DWORD dNumProcessor = 0;//CPU数量
  97. HINSTANCE hInst;// 当前实例
  98. HWND hMain;//主窗口句柄
  99. HWND hSetting;//设置窗口句柄
  100. HWND hTaskBar;//工具窗口句柄
  101. HWND hTaskTips;//提示窗口句柄
  102. //HWND hForeground;
  103. HWND hTray=NULL;//系统主任务栏窗口句柄
  104. HWND hTaskWnd;//系统主任务列表窗口句柄
  105. HWND hReBarWnd=NULL;//系统主任务工具窗口句柄
  106. HWND hTaskListWnd = NULL;
  107. HICON iMain;//窗口图标
  108. HANDLE hMutex;//只能运行一个程序
  109. //const WCHAR szSubKey[] = L"SOFTWARE\\TrayPro";//程序注册表键名
  110. const WCHAR szAppName[] = L"TrayS";//程序名
  111. const WCHAR szNetCpl[] = L" cncpa.cpl";//打开网络设置
  112. const WCHAR szTaskmgr[] = L" oTaskmgr";//打开任务管理器
  113. const WCHAR szPowerCpl[] = L" cpowercfg.cpl";//打开电源设置
  114. const WCHAR szTraySave[] = L"TrayS.dat";
  115. MIB_IFTABLE *mi;//网速结构
  116. //PIP_ADAPTER_INFO ipinfo;
  117. PIP_ADAPTER_ADDRESSES piaa;//网卡结构
  118. TRAFFIC *traffic;//每个网卡速度
  119. int nTraffic=0;//有几张网卡
  120. DWORD m_last_in_bytes = 0;//总上一秒下载速度
  121. DWORD m_last_out_bytes = 0;//总上一秒上传速度
  122. DWORD s_in_byte = 0;//总下载速度
  123. DWORD s_out_byte = 0;//总上传速度
  124. int mWidth;//工具窗口宽度
  125. int mHeight;//工具窗口竖排高度
  126. int iDPI = 96;//当前DPI
  127. BOOL VTray = FALSE;//竖的任务栏
  128. BOOL bResetRun = FALSE;
  129. typedef struct _TRAYSAVE//默认参数
  130. {
  131. DWORD Ver;
  132. ACCENT_STATE aMode[2];
  133. DWORD dAlphaColor[2];
  134. DWORD bAlpha[2];
  135. DWORD dNumValues[12];
  136. BOOL bSound;
  137. int iPos;
  138. int iUnit;
  139. BOOL bTrayIcon;
  140. BOOL bMonitor;
  141. BOOL bMonitorLeft;
  142. BOOL bMonitorFloat;
  143. BOOL bMonitorTransparent;
  144. BOOL bMonitorTraffic;
  145. BOOL bMonitorTemperature;
  146. BOOL bMonitorUsage;
  147. BOOL bMonitorPDH;
  148. int iMonitorSimple;
  149. COLORREF cMonitorColor[8];
  150. POINT dMonitorPoint;
  151. CHAR AdpterName[39];
  152. DWORD FlushTime;
  153. BOOL bMonitorTips;
  154. LOGFONT TraybarFont;
  155. int TraybarFontSize;
  156. LOGFONT TipsFont;
  157. int TipsFontSize;
  158. WCHAR szTrafficOut[8];
  159. WCHAR szTrafficIn[8];
  160. WCHAR szTemperatureCPU[8];
  161. WCHAR szTemperatureCPUUnit[4];
  162. WCHAR szTemperatureGPU[8];
  163. WCHAR szTemperatureGPUUnit[4];
  164. WCHAR szUsageCPU[8];
  165. WCHAR szUsageCPUUnit[4];
  166. WCHAR szUsageMEM[8];
  167. WCHAR szUsageMEMUnit[4];
  168. }TRAYSAVE;
  169. TRAYSAVE TraySave = {
  170. 102,
  171. { ACCENT_ENABLE_TRANSPARENTGRADIENT,ACCENT_ENABLE_BLURBEHIND } ,
  172. { 0x00111111,0x66000000 },{ 255,255 } ,
  173. { 10 * 1024 * 1024,64 * 1024 * 1024,60,80,39,81,39,81,98 * 1048576,88,0,0 } ,
  174. FALSE,
  175. 1,
  176. 1,
  177. FALSE,
  178. TRUE,
  179. TRUE,
  180. FALSE,
  181. FALSE,
  182. TRUE,
  183. FALSE,
  184. TRUE,
  185. FALSE,
  186. 1,
  187. { RGB(0,0,0),RGB(128,128,128),RGB(192,192,192),RGB(255,255,255),RGB(0,168,0),RGB(168,168,0),RGB(168,0,0),RGB(0,0,0) },
  188. { 666,666 },
  189. {0},
  190. 33,
  191. TRUE,
  192. {-12,0,0,0,FW_NORMAL,0,0,0,0,0,0,0,0,L"微软雅黑"} ,
  193. -12,
  194. {-12,0,0,0,FW_NORMAL,0,0,0,0,0,0,0,0,L"微软雅黑"} ,
  195. -12,
  196. L"上传:",
  197. L"下载:",
  198. L"CPU:",
  199. L"℃",
  200. L"GPU:",
  201. L"℃",
  202. L"CPU:" ,
  203. L"%",
  204. L"内存:",
  205. L"%"
  206. };
  207. int wTraffic;//流量宽度
  208. int wTemperature;//温度宽度
  209. int wUsage;//利用率宽度
  210. int wHeight;//监控字符高度
  211. HFONT hFont;//监控窗口字体
  212. BOOL bSettingInit=FALSE;//设置在初始化
  213. int wTipsHeight;//提示字符高度
  214. BOOL inTipsProcessX = FALSE;//是否在X按键中
  215. /*
  216. WCHAR szTrayIcon[] = L"TrayIcon";
  217. WCHAR szPos[] = L"Pos";
  218. WCHAR szUnit[] = L"Unit";
  219. WCHAR szMode[] = L"StyleMode";
  220. WCHAR szAlphaColor[] = L"AlphaColor";
  221. WCHAR szAlpha[] = L"Alpha";
  222. WCHAR szMonitor[] = L"Monitor";
  223. WCHAR szMonitorLeft[] = L"MonitorLeft";
  224. WCHAR szMonitorFloat[] = L"MonitorFloat";
  225. WCHAR szMonitorTransparent[] = L"MonitorT";
  226. WCHAR szMonitorPoint[] = L"MonitorPoint";
  227. WCHAR szMonitorTraffic[] = L"MonitorTraffic";
  228. WCHAR szMonitorTemperature[] = L"MonitorTemperature";
  229. WCHAR szMonitorUsage[] = L"MonitorUsage";
  230. WCHAR szMonitorPDH[] = L"MonitorPDH";
  231. WCHAR szMonitorColor[] = L"MonitorColor";
  232. WCHAR szSound[] = L"Sound";
  233. WCHAR szNumValues[] = L"NumValues";
  234. WCHAR szMonitorSimple[] = L"MonitorSimple";
  235. WCHAR szAdapterName[] = L"AdpterName";
  236. */
  237. NOTIFYICONDATA nid = { 0 };//通知栏传入结构
  238. //RTL_OSVERSIONINFOW rovi;
  239. //BOOL bErasebkgnd = TRUE;
  240. int iProject = -1;
  241. int iWindowMode=FALSE;
  242. BOOL bAccentNormal = FALSE;
  243. MEMORYSTATUSEX MemoryStatusEx;
  244. BOOL bTaskBarMoveing = FALSE;
  245. PROCESSMEMORYUSAGE pmu[3];
  246. PROCESSMEMORYUSAGE *ppmu[3];
  247. PROCESSCPUUSAGE pcu[3];
  248. PROCESSCPUUSAGE *ppcu[3];
  249. int nProcess;
  250. PROCESSTIME * pProcessTime;
  251. BOOL bTaskOther = FALSE;
  252. HMODULE hPDH = NULL;
  253. ////////////////////////////////////////////////查找隐藏试最大化窗口
  254. HMODULE hDwmapi=NULL;
  255. typedef BOOL(WINAPI* pfnDwmGetWindowAttribute)(HWND hwnd, DWORD dwAttribute, PVOID pvAttribute, DWORD cbAttribute);
  256. pfnDwmGetWindowAttribute pDwmGetWindowAttribute;
  257. ////////////////////////////////////////////////获取网速
  258. HMODULE hIphlpapi=NULL;
  259. typedef ULONG(WINAPI* pfnGetAdaptersAddresses)(_In_ ULONG Family, _In_ ULONG Flags, _Reserved_ PVOID Reserved, _Out_writes_bytes_opt_(*SizePointer) PIP_ADAPTER_ADDRESSES AdapterAddresses, _Inout_ PULONG SizePointer);
  260. typedef DWORD(WINAPI* pfnGetIfTable)(_Out_writes_bytes_opt_(*pdwSize) PMIB_IFTABLE pIfTable, _Inout_ PULONG pdwSize, _In_ BOOL bOrder);
  261. pfnGetAdaptersAddresses GetAdaptersAddressesT;
  262. pfnGetIfTable GetIfTableT;
  263. HMODULE hOleacc=NULL;
  264. typedef ULONG(WINAPI* pfnAccessibleObjectFromWindow)(_In_ HWND hwnd, _In_ DWORD dwId, _In_ REFIID riid, _Outptr_ void** ppvObject);
  265. typedef ULONG(WINAPI* pfnAccessibleChildren)(_In_ IAccessible* paccContainer, _In_ LONG iChildStart, _In_ LONG cChildren, _Out_writes_(cChildren) VARIANT* rgvarChildren, _Out_ LONG* pcObtained);
  266. pfnAccessibleObjectFromWindow AccessibleObjectFromWindowT;
  267. pfnAccessibleChildren AccessibleChildrenT;
  268. /////////////////////////////////////////////////CPU温度
  269. BOOL bRing0=NULL;
  270. HMODULE m_hOpenLibSys = NULL;
  271. DWORD iTemperature1;
  272. DWORD iTemperature2;
  273. BOOL bIntel;
  274. ////////////////////////////////////////////////ATI显卡温度
  275. // Memory allocation function
  276. void* __stdcall ADL_Main_Memory_Alloc(int iSize)
  277. {
  278. void* lpBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, iSize);
  279. return lpBuffer;
  280. }
  281. // Optional Memory de-allocation function
  282. void __stdcall ADL_Main_Memory_Free(void** lpBuffer)
  283. {
  284. if (NULL != *lpBuffer)
  285. {
  286. HeapFree(GetProcessHeap(), 0, *lpBuffer);
  287. *lpBuffer = NULL;
  288. }
  289. }
  290. // Definitions of the used function pointers. Add more if you use other ADL APIs
  291. typedef int(*ADL_MAIN_CONTROL_CREATE)(ADL_MAIN_MALLOC_CALLBACK, int);
  292. typedef int(*ADL_MAIN_CONTROL_DESTROY)();
  293. typedef int(*ADL_OVERDRIVE5_TEMPERATURE_GET) (int iAdapterIndex, int iThermalControllerIndex, ADLTemperature *lpTemperature);
  294. ADL_MAIN_CONTROL_CREATE ADL_Main_Control_Create;
  295. ADL_MAIN_CONTROL_DESTROY ADL_Main_Control_Destroy;
  296. ADL_OVERDRIVE5_TEMPERATURE_GET ADL_Overdrive5_Temperature_Get;
  297. ADLTemperature adlTemperature = { 0 };
  298. HMODULE hATIDLL=NULL;
  299. ///////////////////////////////////////////////NVIDIA显卡温度
  300. // 接口ID值
  301. #define ID_NvAPI_Initialize 0x0150E828
  302. #define ID_NvAPI_GPU_GetFullName 0xCEEE8E9F
  303. #define ID_NvAPI_GPU_GetThermalSettings 0xE3640A56
  304. #define ID_NvAPI_EnumNvidiaDisplayHandle 0x9ABDD40D
  305. #define ID_NvAPI_GetPhysicalGPUsFromDisplay 0x34EF9506
  306. #define ID_NvAPI_EnumPhysicalGPUs 0xE5AC921F
  307. #define ID_NvAPI_GPU_GetTachReading 0x5F608315
  308. #define ID_NvAPI_GPU_GetAllClocks 0x1BD69F49
  309. #define ID_NvAPI_GPU_GetPStates 0x60DED2ED
  310. #define ID_NvAPI_GPU_GetUsages 0x189A1FDF
  311. #define ID_NvAPI_GPU_GetCoolerSettings 0xDA141340
  312. #define ID_NvAPI_GPU_SetCoolerLevels 0x891FA0AE
  313. #define ID_NvAPI_GPU_GetMemoryInfo 0x774AA982
  314. #define ID_NvAPI_GetDisplayDriverVersion 0xF951A4D1
  315. #define ID_NvAPI_GetInterfaceVersionString 0x01053FA5
  316. #define ID_NvAPI_GPU_GetPCIIdentifiers 0x2DDFB66E
  317. #define NVAPI_MAX_THERMAL_SENSORS_PER_GPU 3
  318. #define NVAPI_MAX_PHYSICAL_GPUS 64
  319. #define NvU32 unsigned long
  320. #define NvS32 signed int
  321. #define MAKE_NVAPI_VERSION(typeName,ver)(NvU32)(sizeof(typeName) | ((ver) << 16))
  322. typedef int NvPhysicalGpuHandle;
  323. typedef int NvDisplayHandle;
  324. #define MAX_THERMAL_SENSORS_PER_GPU 3
  325. typedef enum _NV_THERMAL_CONTROLLER
  326. {
  327. NVAPI_THERMAL_CONTROLLER_NONE = 0,
  328. NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL,
  329. NVAPI_THERMAL_CONTROLLER_ADM1032,
  330. NVAPI_THERMAL_CONTROLLER_MAX6649,
  331. NVAPI_THERMAL_CONTROLLER_MAX1617,
  332. NVAPI_THERMAL_CONTROLLER_LM99,
  333. NVAPI_THERMAL_CONTROLLER_LM89,
  334. NVAPI_THERMAL_CONTROLLER_LM64,
  335. NVAPI_THERMAL_CONTROLLER_ADT7473,
  336. NVAPI_THERMAL_CONTROLLER_SBMAX6649,
  337. NVAPI_THERMAL_CONTROLLER_VBIOSEVT,
  338. NVAPI_THERMAL_CONTROLLER_OS,
  339. NVAPI_THERMAL_CONTROLLER_UNKNOWN = -1,
  340. } NV_THERMAL_CONTROLLER;
  341. typedef enum _NV_THERMAL_TARGET
  342. {
  343. NVAPI_THERMAL_TARGET_NONE = 0,
  344. NVAPI_THERMAL_TARGET_GPU = 1, //!< GPU core temperature requires NvPhysicalGpuHandle
  345. NVAPI_THERMAL_TARGET_MEMORY = 2, //!< GPU memory temperature requires NvPhysicalGpuHandle
  346. NVAPI_THERMAL_TARGET_POWER_SUPPLY = 4, //!< GPU power supply temperature requires NvPhysicalGpuHandle
  347. NVAPI_THERMAL_TARGET_BOARD = 8, //!< GPU board ambient temperature requires NvPhysicalGpuHandle
  348. NVAPI_THERMAL_TARGET_VCD_BOARD = 9, //!< Visual Computing Device Board temperature requires NvVisualComputingDeviceHandle
  349. NVAPI_THERMAL_TARGET_VCD_INLET = 10, //!< Visual Computing Device Inlet temperature requires NvVisualComputingDeviceHandle
  350. NVAPI_THERMAL_TARGET_VCD_OUTLET = 11, //!< Visual Computing Device Outlet temperature requires NvVisualComputingDeviceHandle
  351. NVAPI_THERMAL_TARGET_ALL = 15,
  352. NVAPI_THERMAL_TARGET_UNKNOWN = -1,
  353. } NV_THERMAL_TARGET;
  354. typedef struct _NV_GPU_THERMAL_SETTINGS_V1
  355. {
  356. NvU32 version; //!< structure version
  357. NvU32 count; //!< number of associated thermal sensors
  358. struct
  359. {
  360. NV_THERMAL_CONTROLLER controller; //!< internal, ADM1032, MAX6649...
  361. NvU32 defaultMinTemp; //!< The min default temperature value of the thermal sensor in degree Celsius
  362. NvU32 defaultMaxTemp; //!< The max default temperature value of the thermal sensor in degree Celsius
  363. NvU32 currentTemp; //!< The current temperature value of the thermal sensor in degree Celsius
  364. NV_THERMAL_TARGET target; //!< Thermal sensor targeted @ GPU, memory, chipset, powersupply, Visual Computing Device, etc.
  365. } sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU];
  366. } NV_GPU_THERMAL_SETTINGS_V1;
  367. typedef struct _NV_GPU_THERMAL_SETTINGS_V2
  368. {
  369. NvU32 version; //!< structure version
  370. NvU32 count; //!< number of associated thermal sensors
  371. struct
  372. {
  373. NV_THERMAL_CONTROLLER controller; //!< internal, ADM1032, MAX6649...
  374. NvS32 defaultMinTemp; //!< Minimum default temperature value of the thermal sensor in degree Celsius
  375. NvS32 defaultMaxTemp; //!< Maximum default temperature value of the thermal sensor in degree Celsius
  376. NvS32 currentTemp; //!< Current temperature value of the thermal sensor in degree Celsius
  377. NV_THERMAL_TARGET target; //!< Thermal sensor targeted - GPU, memory, chipset, powersupply, Visual Computing Device, etc
  378. } sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU];
  379. } NV_GPU_THERMAL_SETTINGS_V2;
  380. typedef NV_GPU_THERMAL_SETTINGS_V2 NV_GPU_THERMAL_SETTINGS;
  381. #define NV_GPU_THERMAL_SETTINGS_VER_1 MAKE_NVAPI_VERSION(NV_GPU_THERMAL_SETTINGS_V1,1)
  382. #define NV_GPU_THERMAL_SETTINGS_VER_2 MAKE_NVAPI_VERSION(NV_GPU_THERMAL_SETTINGS_V2,2)
  383. #define NV_GPU_THERMAL_SETTINGS_VER NV_GPU_THERMAL_SETTINGS_VER_2
  384. typedef UINT32 NvAPI_Status;
  385. typedef void* (*NvAPI_QueryInterface_t)(UINT32 offset);
  386. typedef NvAPI_Status(__cdecl *NvAPI_Initialize_t)(void);
  387. typedef NvAPI_Status(*NvAPI_EnumPhysicalGPUs_t)(NvPhysicalGpuHandle *pGpuHandles, int *pGpuCount);
  388. typedef NvAPI_Status(__cdecl *NvAPI_GPU_GetThermalSettings_t)(const NvPhysicalGpuHandle gpuHandle, int sensorIndex, NV_GPU_THERMAL_SETTINGS *pnvGPUThermalSettings);
  389. NvAPI_QueryInterface_t NvAPI_QueryInterface;
  390. NvAPI_GPU_GetThermalSettings_t NvAPI_GPU_GetThermalSettings;
  391. HMODULE hNVDLL = NULL;
  392. NvPhysicalGpuHandle hPhysicalGpu[4];
  393. /////////////////////////////////////////////////////CPU频率
  394. typedef struct _PROCESSOR_POWER_INFORMATION {
  395. ULONG Number;
  396. ULONG MaxMhz;
  397. ULONG CurrentMhz;
  398. ULONG MhzLimit;
  399. ULONG MaxIdleState;
  400. ULONG CurrentIdleState;
  401. } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
  402. // 此代码模块中包含的函数的前向声明:
  403. INT_PTR CALLBACK ColorButtonProc(HWND, UINT, WPARAM, LPARAM);//颜色按钮子类化过程
  404. WNDPROC oldColorButtonPoroc;//原来的颜色按钮控件过程
  405. void AdjustWindowPos();
  406. BOOL InitInstance(HINSTANCE, int);
  407. INT_PTR CALLBACK MainProc(HWND, UINT, WPARAM, LPARAM);
  408. INT_PTR CALLBACK SettingProc(HWND, UINT, WPARAM, LPARAM);
  409. INT_PTR CALLBACK TaskBarProc(HWND, UINT, WPARAM, LPARAM);
  410. INT_PTR CALLBACK TaskTipsProc(HWND, UINT, WPARAM, LPARAM);
  411. void SetTaskBarPos(HWND, HWND, HWND, HWND, BOOL);
  412. int DrawShadowText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);
  413. void FreeTemperatureDLL();
  414. void LoadTemperatureDLL();
  415. void SetWH();
  416. int GetProcessMemUsage();
  417. void GetProcessCpuUsage();