| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424 |
- #pragma once
-
- #include "resource.h"
- #include "function.h"
- #include <Commdlg.h>
- #include <Oleacc.h>
- #include <winsock2.h>
- #include <Iphlpapi.h>
- #include <Tlhelp32.h>
- #include <dwmapi.h>
- //WINRING0
- #include "OlsDef.h"
- #include "OlsApiInit.h"
- //ATIGPU
- #include "adl_sdk.h"
-
- #define MAX_LOADSTRING 100
- #define MAX_TEXT 2048
- #define WM_IAWENTRAY WM_USER+8//通知栏消息
- #define WM_TRAYS WM_USER+8888
- extern "C" WINUSERAPI BOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
- //窗口图标结构
- typedef HANDLE HTHUMBNAIL;
- typedef HTHUMBNAIL* PHTHUMBNAIL;
- typedef struct _WINDOW_INFO
- {
- HICON hIcon;//图标
- // TCHAR szFileName[MAX_PATH];//文件名
- TCHAR szWindowTitle[MAX_PATH];//窗口标题
- //非显示项目
- // TCHAR szFilePath[MAX_PATH];//文件路径
- HWND hWnd;//窗口句柄
- BOOL bForegorund;//是否焦点
- BOOL bIconic;//是否最小化
- BOOL bTopMost;//是否置顶
- BOOL bHide;
- // bool bDesktopItem;//「デスクトップ」である
- // bool bCancelItem;//「キャンセル」である
- BOOL bUWPApp;//UWPApp
- HWND hUICoreWnd;//UWPApp的Windows.UI.Core.CoreWindow子窗口
- // HTHUMBNAIL hThumbnail;
- }WINDOW_INFO, * LPWINDOW_INFO;
- HANDLE g_hHeapWindowInfo;
- int g_iWindowCount = 0;
- LPWINDOW_INFO g_WindowInfo;
- HWND hTaskIcon=NULL;
- HWND hThumbnail = NULL;
- HTHUMBNAIL hThumb=NULL;
- HWND hThumbWnd = NULL;
- HWND hThumbUWP = NULL;
- int iTaskIconXY;
- int iTaskIconWidth=48;
- HICON hThumbIcon[14];
- ULONG_PTR ulToken;
- int IconSize;
- HRESULT(WINAPI* pDwmRegisterThumbnail)(HWND, HWND, PHTHUMBNAIL);
- HRESULT(WINAPI* pDwmUnregisterThumbnail)(HTHUMBNAIL);
- HRESULT(WINAPI* pDwmUpdateThumbnailProperties)(HTHUMBNAIL, const DWM_THUMBNAIL_PROPERTIES*);
- HRESULT(WINAPI* pDwmQueryThumbnailSourceSize)(HTHUMBNAIL, PSIZE);
- void AddItem(LPWINDOW_INFO lpWindowInfo)
- {
- bool bFirstTime = g_iWindowCount == 0;
- WINDOW_INFO* pTmp = NULL;
- if (bFirstTime)pTmp = (WINDOW_INFO*)HeapAlloc(g_hHeapWindowInfo, HEAP_ZERO_MEMORY, (++g_iWindowCount) * sizeof(WINDOW_INFO));
- else pTmp = (WINDOW_INFO*)HeapReAlloc(g_hHeapWindowInfo, HEAP_ZERO_MEMORY, g_WindowInfo, (++g_iWindowCount) * sizeof(WINDOW_INFO));
- g_WindowInfo = pTmp;
- g_WindowInfo[g_iWindowCount - 1] = *lpWindowInfo;
- return;
- }
- /////////////////////////////////////////////自定义结构
- typedef struct _TRAFFIC
- {
- DWORD in_bytes;
- DWORD out_bytes;
- DWORD in_byte;
- DWORD out_byte;
- PWCHAR FriendlyName;
- PCHAR AdapterName;
- WCHAR IP4[16];
- }TRAFFIC;
- typedef struct _PROCESSMEMORYUSAGE
- {
- WCHAR szExe[25];
- DWORD dwProcessID;
- SIZE_T dwMemUsage;
- }PROCESSMEMORYUSAGE;
- typedef struct _PROCESSCPUUSAGE
- {
- WCHAR szExe[25];
- DWORD dwProcessID;
- float fCpuUsage;
- }PROCESSCPUUSAGE;
- typedef struct _PROCESSTIME
- {
- DWORD dwProcessID;
- LARGE_INTEGER g_slgProcessTimeOld;
- }PROCESSTIME;
- DWORD dNumProcessor = 0;//CPU数量
- HINSTANCE hInst;// 当前实例
- HWND hMain;//主窗口句柄
- HWND hSetting;//设置窗口句柄
- HWND hTaskBar;//工具窗口句柄
- HWND hTaskTips;//提示窗口句柄
- //HWND hForeground;
- HWND hTray=NULL;//系统主任务栏窗口句柄
- HWND hTaskWnd;//系统主任务列表窗口句柄
- HWND hReBarWnd=NULL;//系统主任务工具窗口句柄
- HWND hTaskListWnd = NULL;
- HICON iMain;//窗口图标
- HANDLE hMutex;//只能运行一个程序
- //const WCHAR szSubKey[] = L"SOFTWARE\\TrayPro";//程序注册表键名
- const WCHAR szAppName[] = L"TrayS";//程序名
- const WCHAR szNetCpl[] = L" cncpa.cpl";//打开网络设置
- const WCHAR szTaskmgr[] = L" oTaskmgr";//打开任务管理器
- const WCHAR szPowerCpl[] = L" cpowercfg.cpl";//打开电源设置
- const WCHAR szTraySave[] = L"TrayS.dat";
- MIB_IFTABLE *mi;//网速结构
- //PIP_ADAPTER_INFO ipinfo;
- PIP_ADAPTER_ADDRESSES piaa;//网卡结构
- TRAFFIC *traffic;//每个网卡速度
- int nTraffic=0;//有几张网卡
- DWORD m_last_in_bytes = 0;//总上一秒下载速度
- DWORD m_last_out_bytes = 0;//总上一秒上传速度
- DWORD s_in_byte = 0;//总下载速度
- DWORD s_out_byte = 0;//总上传速度
- int mWidth;//工具窗口宽度
- int mHeight;//工具窗口竖排高度
- int iDPI = 96;//当前DPI
- BOOL VTray = FALSE;//竖的任务栏
- BOOL bResetRun = FALSE;
- typedef struct _TRAYSAVE//默认参数
- {
- DWORD Ver;
- ACCENT_STATE aMode[2];
- DWORD dAlphaColor[2];
- DWORD bAlpha[2];
- DWORD dNumValues[12];
- BOOL bSound;
- int iPos;
- int iUnit;
- BOOL bTrayIcon;
- BOOL bMonitor;
- BOOL bMonitorLeft;
- BOOL bMonitorFloat;
- BOOL bMonitorTransparent;
- BOOL bMonitorTraffic;
- BOOL bMonitorTemperature;
- BOOL bMonitorUsage;
- BOOL bMonitorPDH;
- int iMonitorSimple;
- COLORREF cMonitorColor[8];
- POINT dMonitorPoint;
- CHAR AdpterName[39];
- DWORD FlushTime;
- BOOL bMonitorTips;
- LOGFONT TraybarFont;
- int TraybarFontSize;
- LOGFONT TipsFont;
- int TipsFontSize;
- WCHAR szTrafficOut[8];
- WCHAR szTrafficIn[8];
- WCHAR szTemperatureCPU[8];
- WCHAR szTemperatureCPUUnit[4];
- WCHAR szTemperatureGPU[8];
- WCHAR szTemperatureGPUUnit[4];
- WCHAR szUsageCPU[8];
- WCHAR szUsageCPUUnit[4];
- WCHAR szUsageMEM[8];
- WCHAR szUsageMEMUnit[4];
- }TRAYSAVE;
- TRAYSAVE TraySave = {
- 102,
- { ACCENT_ENABLE_TRANSPARENTGRADIENT,ACCENT_ENABLE_BLURBEHIND } ,
- { 0x00111111,0x66000000 },{ 255,255 } ,
- { 10 * 1024 * 1024,64 * 1024 * 1024,60,80,39,81,39,81,98 * 1048576,88,0,0 } ,
- FALSE,
- 1,
- 1,
- FALSE,
- TRUE,
- TRUE,
- FALSE,
- FALSE,
- TRUE,
- FALSE,
- TRUE,
- FALSE,
- 1,
- { 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) },
- { 666,666 },
- {0},
- 33,
- TRUE,
- {-12,0,0,0,FW_NORMAL,0,0,0,0,0,0,0,0,L"微软雅黑"} ,
- -12,
- {-12,0,0,0,FW_NORMAL,0,0,0,0,0,0,0,0,L"微软雅黑"} ,
- -12,
- L"上传:",
- L"下载:",
- L"CPU:",
- L"℃",
- L"GPU:",
- L"℃",
- L"CPU:" ,
- L"%",
- L"内存:",
- L"%"
- };
- int wTraffic;//流量宽度
- int wTemperature;//温度宽度
- int wUsage;//利用率宽度
- int wHeight;//监控字符高度
- HFONT hFont;//监控窗口字体
- BOOL bSettingInit=FALSE;//设置在初始化
- int wTipsHeight;//提示字符高度
- BOOL inTipsProcessX = FALSE;//是否在X按键中
- /*
- WCHAR szTrayIcon[] = L"TrayIcon";
- WCHAR szPos[] = L"Pos";
- WCHAR szUnit[] = L"Unit";
- WCHAR szMode[] = L"StyleMode";
- WCHAR szAlphaColor[] = L"AlphaColor";
- WCHAR szAlpha[] = L"Alpha";
- WCHAR szMonitor[] = L"Monitor";
- WCHAR szMonitorLeft[] = L"MonitorLeft";
- WCHAR szMonitorFloat[] = L"MonitorFloat";
- WCHAR szMonitorTransparent[] = L"MonitorT";
- WCHAR szMonitorPoint[] = L"MonitorPoint";
- WCHAR szMonitorTraffic[] = L"MonitorTraffic";
- WCHAR szMonitorTemperature[] = L"MonitorTemperature";
- WCHAR szMonitorUsage[] = L"MonitorUsage";
- WCHAR szMonitorPDH[] = L"MonitorPDH";
- WCHAR szMonitorColor[] = L"MonitorColor";
- WCHAR szSound[] = L"Sound";
- WCHAR szNumValues[] = L"NumValues";
- WCHAR szMonitorSimple[] = L"MonitorSimple";
- WCHAR szAdapterName[] = L"AdpterName";
- */
- NOTIFYICONDATA nid = { 0 };//通知栏传入结构
- //RTL_OSVERSIONINFOW rovi;
- //BOOL bErasebkgnd = TRUE;
- int iProject = -1;
- int iWindowMode=FALSE;
- BOOL bAccentNormal = FALSE;
- MEMORYSTATUSEX MemoryStatusEx;
- BOOL bTaskBarMoveing = FALSE;
- PROCESSMEMORYUSAGE pmu[3];
- PROCESSMEMORYUSAGE *ppmu[3];
- PROCESSCPUUSAGE pcu[3];
- PROCESSCPUUSAGE *ppcu[3];
- int nProcess;
- PROCESSTIME * pProcessTime;
- BOOL bTaskOther = FALSE;
- HMODULE hPDH = NULL;
- ////////////////////////////////////////////////查找隐藏试最大化窗口
- HMODULE hDwmapi=NULL;
- typedef BOOL(WINAPI* pfnDwmGetWindowAttribute)(HWND hwnd, DWORD dwAttribute, PVOID pvAttribute, DWORD cbAttribute);
- pfnDwmGetWindowAttribute pDwmGetWindowAttribute;
- ////////////////////////////////////////////////获取网速
- HMODULE hIphlpapi=NULL;
- 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);
- typedef DWORD(WINAPI* pfnGetIfTable)(_Out_writes_bytes_opt_(*pdwSize) PMIB_IFTABLE pIfTable, _Inout_ PULONG pdwSize, _In_ BOOL bOrder);
- pfnGetAdaptersAddresses GetAdaptersAddressesT;
- pfnGetIfTable GetIfTableT;
- HMODULE hOleacc=NULL;
- typedef ULONG(WINAPI* pfnAccessibleObjectFromWindow)(_In_ HWND hwnd, _In_ DWORD dwId, _In_ REFIID riid, _Outptr_ void** ppvObject);
- typedef ULONG(WINAPI* pfnAccessibleChildren)(_In_ IAccessible* paccContainer, _In_ LONG iChildStart, _In_ LONG cChildren, _Out_writes_(cChildren) VARIANT* rgvarChildren, _Out_ LONG* pcObtained);
- pfnAccessibleObjectFromWindow AccessibleObjectFromWindowT;
- pfnAccessibleChildren AccessibleChildrenT;
- /////////////////////////////////////////////////CPU温度
- BOOL bRing0=NULL;
- HMODULE m_hOpenLibSys = NULL;
- DWORD iTemperature1;
- DWORD iTemperature2;
- BOOL bIntel;
- ////////////////////////////////////////////////ATI显卡温度
- // Memory allocation function
- void* __stdcall ADL_Main_Memory_Alloc(int iSize)
- {
- void* lpBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, iSize);
- return lpBuffer;
- }
- // Optional Memory de-allocation function
- void __stdcall ADL_Main_Memory_Free(void** lpBuffer)
- {
- if (NULL != *lpBuffer)
- {
- HeapFree(GetProcessHeap(), 0, *lpBuffer);
- *lpBuffer = NULL;
- }
- }
- // Definitions of the used function pointers. Add more if you use other ADL APIs
- typedef int(*ADL_MAIN_CONTROL_CREATE)(ADL_MAIN_MALLOC_CALLBACK, int);
- typedef int(*ADL_MAIN_CONTROL_DESTROY)();
- typedef int(*ADL_OVERDRIVE5_TEMPERATURE_GET) (int iAdapterIndex, int iThermalControllerIndex, ADLTemperature *lpTemperature);
- ADL_MAIN_CONTROL_CREATE ADL_Main_Control_Create;
- ADL_MAIN_CONTROL_DESTROY ADL_Main_Control_Destroy;
- ADL_OVERDRIVE5_TEMPERATURE_GET ADL_Overdrive5_Temperature_Get;
- ADLTemperature adlTemperature = { 0 };
- HMODULE hATIDLL=NULL;
- ///////////////////////////////////////////////NVIDIA显卡温度
- // 接口ID值
- #define ID_NvAPI_Initialize 0x0150E828
- #define ID_NvAPI_GPU_GetFullName 0xCEEE8E9F
- #define ID_NvAPI_GPU_GetThermalSettings 0xE3640A56
- #define ID_NvAPI_EnumNvidiaDisplayHandle 0x9ABDD40D
- #define ID_NvAPI_GetPhysicalGPUsFromDisplay 0x34EF9506
- #define ID_NvAPI_EnumPhysicalGPUs 0xE5AC921F
- #define ID_NvAPI_GPU_GetTachReading 0x5F608315
- #define ID_NvAPI_GPU_GetAllClocks 0x1BD69F49
- #define ID_NvAPI_GPU_GetPStates 0x60DED2ED
- #define ID_NvAPI_GPU_GetUsages 0x189A1FDF
- #define ID_NvAPI_GPU_GetCoolerSettings 0xDA141340
- #define ID_NvAPI_GPU_SetCoolerLevels 0x891FA0AE
- #define ID_NvAPI_GPU_GetMemoryInfo 0x774AA982
- #define ID_NvAPI_GetDisplayDriverVersion 0xF951A4D1
- #define ID_NvAPI_GetInterfaceVersionString 0x01053FA5
- #define ID_NvAPI_GPU_GetPCIIdentifiers 0x2DDFB66E
- #define NVAPI_MAX_THERMAL_SENSORS_PER_GPU 3
- #define NVAPI_MAX_PHYSICAL_GPUS 64
- #define NvU32 unsigned long
- #define NvS32 signed int
- #define MAKE_NVAPI_VERSION(typeName,ver)(NvU32)(sizeof(typeName) | ((ver) << 16))
- typedef int NvPhysicalGpuHandle;
- typedef int NvDisplayHandle;
- #define MAX_THERMAL_SENSORS_PER_GPU 3
- typedef enum _NV_THERMAL_CONTROLLER
- {
- NVAPI_THERMAL_CONTROLLER_NONE = 0,
- NVAPI_THERMAL_CONTROLLER_GPU_INTERNAL,
- NVAPI_THERMAL_CONTROLLER_ADM1032,
- NVAPI_THERMAL_CONTROLLER_MAX6649,
- NVAPI_THERMAL_CONTROLLER_MAX1617,
- NVAPI_THERMAL_CONTROLLER_LM99,
- NVAPI_THERMAL_CONTROLLER_LM89,
- NVAPI_THERMAL_CONTROLLER_LM64,
- NVAPI_THERMAL_CONTROLLER_ADT7473,
- NVAPI_THERMAL_CONTROLLER_SBMAX6649,
- NVAPI_THERMAL_CONTROLLER_VBIOSEVT,
- NVAPI_THERMAL_CONTROLLER_OS,
- NVAPI_THERMAL_CONTROLLER_UNKNOWN = -1,
- } NV_THERMAL_CONTROLLER;
- typedef enum _NV_THERMAL_TARGET
- {
- NVAPI_THERMAL_TARGET_NONE = 0,
- NVAPI_THERMAL_TARGET_GPU = 1, //!< GPU core temperature requires NvPhysicalGpuHandle
- NVAPI_THERMAL_TARGET_MEMORY = 2, //!< GPU memory temperature requires NvPhysicalGpuHandle
- NVAPI_THERMAL_TARGET_POWER_SUPPLY = 4, //!< GPU power supply temperature requires NvPhysicalGpuHandle
- NVAPI_THERMAL_TARGET_BOARD = 8, //!< GPU board ambient temperature requires NvPhysicalGpuHandle
- NVAPI_THERMAL_TARGET_VCD_BOARD = 9, //!< Visual Computing Device Board temperature requires NvVisualComputingDeviceHandle
- NVAPI_THERMAL_TARGET_VCD_INLET = 10, //!< Visual Computing Device Inlet temperature requires NvVisualComputingDeviceHandle
- NVAPI_THERMAL_TARGET_VCD_OUTLET = 11, //!< Visual Computing Device Outlet temperature requires NvVisualComputingDeviceHandle
-
- NVAPI_THERMAL_TARGET_ALL = 15,
- NVAPI_THERMAL_TARGET_UNKNOWN = -1,
- } NV_THERMAL_TARGET;
- typedef struct _NV_GPU_THERMAL_SETTINGS_V1
- {
- NvU32 version; //!< structure version
- NvU32 count; //!< number of associated thermal sensors
- struct
- {
- NV_THERMAL_CONTROLLER controller; //!< internal, ADM1032, MAX6649...
- NvU32 defaultMinTemp; //!< The min default temperature value of the thermal sensor in degree Celsius
- NvU32 defaultMaxTemp; //!< The max default temperature value of the thermal sensor in degree Celsius
- NvU32 currentTemp; //!< The current temperature value of the thermal sensor in degree Celsius
- NV_THERMAL_TARGET target; //!< Thermal sensor targeted @ GPU, memory, chipset, powersupply, Visual Computing Device, etc.
- } sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU];
-
- } NV_GPU_THERMAL_SETTINGS_V1;
- typedef struct _NV_GPU_THERMAL_SETTINGS_V2
- {
- NvU32 version; //!< structure version
- NvU32 count; //!< number of associated thermal sensors
- struct
- {
- NV_THERMAL_CONTROLLER controller; //!< internal, ADM1032, MAX6649...
- NvS32 defaultMinTemp; //!< Minimum default temperature value of the thermal sensor in degree Celsius
- NvS32 defaultMaxTemp; //!< Maximum default temperature value of the thermal sensor in degree Celsius
- NvS32 currentTemp; //!< Current temperature value of the thermal sensor in degree Celsius
- NV_THERMAL_TARGET target; //!< Thermal sensor targeted - GPU, memory, chipset, powersupply, Visual Computing Device, etc
- } sensor[NVAPI_MAX_THERMAL_SENSORS_PER_GPU];
-
- } NV_GPU_THERMAL_SETTINGS_V2;
- typedef NV_GPU_THERMAL_SETTINGS_V2 NV_GPU_THERMAL_SETTINGS;
- #define NV_GPU_THERMAL_SETTINGS_VER_1 MAKE_NVAPI_VERSION(NV_GPU_THERMAL_SETTINGS_V1,1)
- #define NV_GPU_THERMAL_SETTINGS_VER_2 MAKE_NVAPI_VERSION(NV_GPU_THERMAL_SETTINGS_V2,2)
- #define NV_GPU_THERMAL_SETTINGS_VER NV_GPU_THERMAL_SETTINGS_VER_2
- typedef UINT32 NvAPI_Status;
- typedef void* (*NvAPI_QueryInterface_t)(UINT32 offset);
- typedef NvAPI_Status(__cdecl *NvAPI_Initialize_t)(void);
- typedef NvAPI_Status(*NvAPI_EnumPhysicalGPUs_t)(NvPhysicalGpuHandle *pGpuHandles, int *pGpuCount);
- typedef NvAPI_Status(__cdecl *NvAPI_GPU_GetThermalSettings_t)(const NvPhysicalGpuHandle gpuHandle, int sensorIndex, NV_GPU_THERMAL_SETTINGS *pnvGPUThermalSettings);
- NvAPI_QueryInterface_t NvAPI_QueryInterface;
- NvAPI_GPU_GetThermalSettings_t NvAPI_GPU_GetThermalSettings;
- HMODULE hNVDLL = NULL;
- NvPhysicalGpuHandle hPhysicalGpu[4];
- /////////////////////////////////////////////////////CPU频率
- typedef struct _PROCESSOR_POWER_INFORMATION {
- ULONG Number;
- ULONG MaxMhz;
- ULONG CurrentMhz;
- ULONG MhzLimit;
- ULONG MaxIdleState;
- ULONG CurrentIdleState;
- } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
-
-
- // 此代码模块中包含的函数的前向声明:
- INT_PTR CALLBACK ColorButtonProc(HWND, UINT, WPARAM, LPARAM);//颜色按钮子类化过程
- WNDPROC oldColorButtonPoroc;//原来的颜色按钮控件过程
- void AdjustWindowPos();
- BOOL InitInstance(HINSTANCE, int);
- INT_PTR CALLBACK MainProc(HWND, UINT, WPARAM, LPARAM);
- INT_PTR CALLBACK SettingProc(HWND, UINT, WPARAM, LPARAM);
- INT_PTR CALLBACK TaskBarProc(HWND, UINT, WPARAM, LPARAM);
- INT_PTR CALLBACK TaskTipsProc(HWND, UINT, WPARAM, LPARAM);
- void SetTaskBarPos(HWND, HWND, HWND, HWND, BOOL);
- int DrawShadowText(HDC hDC, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);
- void FreeTemperatureDLL();
- void LoadTemperatureDLL();
- void SetWH();
- int GetProcessMemUsage();
- void GetProcessCpuUsage();
|