当前位置: 首页 > news >正文

第3章 Windows运行机理-3.1 内核分析(13)

在程序的运行中,可以看见,当程序启动的时候,并没有出现窗口,而是在Windows的任务栏的右下角出现了一个下雨一样的小图标,这叫做托盘方法。实现起来也是很简单,很多资料中都介绍了,这里就不赘述。

#define WM_ICONCALLBACK (WM_USER+0x1234)

///////////////////////////////////////////////////

//

// 添加任务条Icon

//

///////////////////////////////////////////////////

int AddShellIcon(void)

{

LPBYTE lpszTip;

NOTIFYICONDATA tnid;

BOOL res;

if(China)

{

LoadString(hResInstance,IDS_COOLCPUNAME,

Text,sizeof(Text));

lpszTip=Text;

}

else lpszTip="CoolCPU";

tnid.cbSize = sizeof(NOTIFYICONDATA);

tnid.hWnd = MainWin;

tnid.uID = 1;

tnid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;

tnid.uCallbackMessage = WM_ICONCALLBACK;

tnid.hIcon = hIcon;

lstrcpyn(tnid.szTip,lpszTip,sizeof(tnid.szTip));

res = Shell_NotifyIcon(NIM_ADD, &tnid);

return res;

}

///////////////////////////////////////////////////

//

// 删除任务条Icon

//

///////////////////////////////////////////////////

int DelShellIcon(void)

{

NOTIFYICONDATA tnid;

BOOL res;

tnid.cbSize = sizeof(NOTIFYICONDATA);

tnid.hWnd = MainWin;

tnid.uID = 1;

res = Shell_NotifyIcon(NIM_DELETE, &tnid);

return res;

}

///////////////////////////////////////////////////

//

// 窗口处理函数

//

///////////////////////////////////////////////////

long APIENTRY WndProc( HWND hwnd,UINT message,UINT wParam,

LONG lParam)

{

POINT ptCurrent;

PAINTSTRUCT ps;

switch(message)

{

case WM_PAINT:

BeginPaint(hwnd,&ps);

EndPaint(hwnd,&ps);

return 0;

case WM_ICONCALLBACK: //任务条Icon回调消息

switch(lParam)

{

case WM_LBUTTONDBLCLK:

case WM_LBUTTONDOWN:

case WM_RBUTTONDOWN:

GetCursorPos(&ptCurrent);

SetForegroundWindow(hwnd);

//显示菜单

TrackPopupMenu( hPopMenu,

TPM_RIGHTBUTTON,

ptCurrent.x,

ptCurrent.y,

0,

hwnd,

NULL);

break;

}

return 0;

case WM_INITMENUPOPUP:

if(lParam==0)

{

if(WinNT==0 && hCVxD!=INVALID_HANDLE_VALUE)

{

if(EnableHlt)

CheckMenuItem((HMENU)wParam,

ID_COOLCPU,

MF_BYCOMMAND|MF_CHECKED);

else

CheckMenuItem((HMENU)wParam,

ID_COOLCPU,

MF_BYCOMMAND|MF_UNCHECKED);

}

else

EnableMenuItem((HMENU)wParam,ID_COOLCPU,

MF_BYCOMMAND|MF_GRAYED);

}

return 0;

case WM_COMMAND:

switch(wParam)

{

case BN_CLICKED:

break;

case ID_EXIT:

PostMessage(hwnd,WM_CLOSE,0,0);

break;

//Cool Cpu

case ID_COOLCPU:

if(WinNT==0)

{

if(hCVxD!=INVALID_HANDLE_VALUE)

{

EnableHlt^=1;

DeviceIoControl(hCVxD,3,

(LPVOID)NULL,0,

(LPVOID)&EnableHlt,

sizeof(EnableHlt),

&cbBytesReturned,NULL);

}

}

break;

}

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

case WM_CLOSE:

break;

}

return (DefWindowProc(hwnd,message,wParam,lParam));

}

我们可以通过Windows的系统资源监视器看到,当降温程序打开时,CPU的占用率会马上提高,当降温程序关闭时,CPU的占用率又马上恢复原值。这是因为系统资源监视器也是通过空闲时调用的方法实现的,所以当降温程序工作时,CPU就会暂停了,就好像是占用了很多的资源。

http://www.jsqmd.com/news/408182/

相关文章:

  • 好写作AI | 求职信怎么写?AI帮你量身定制,告别千篇一律
  • 耐达讯自动化Profinet转Devicenet网关:破解汽车制造业电机控制协议壁垒的利器
  • 2026年评价高的工业滑升门公司推荐:工厂快速堆积门、快速卷帘门厂家、快速车库门、快速门安装、磁吸门帘选择指南 - 优质品牌商家
  • 使用1Panel跨域解决方案
  • 好写作AI | 英语作文没把握?AI辅助英文润色,帮你写出地道表达
  • 收藏!2026想转行AI/入坑大模型?时机绝佳,但选对岗位少走90%弯路
  • 长尾关键词优化与SEO的融合策略提升网站流量与排名效果
  • 第3章 Windows运行机理-3.1 内核分析(12)
  • 好写作AI | 简历平平无奇?用AI优化个人经历,拿捏名企HR
  • 论文汇总丨超100篇AI for Science重要成果,一文速览2025年技术创新
  • GESP2023年12月认证C++二级( 第二部分判断题(1-10))
  • 三步骤,零编程:耐达讯自动化工业网关实现Profinet转Devicenet快速集成
  • 【网络安全】ARP攻击一篇文章讲透:原理、攻击与防御
  • GESP2023年12月认证C++二级( 第一部分选择题(9-15))
  • 性能测试面试题,5分钟速刷一下!
  • 2026年AI训练图片、视频、数据集供应商优选,卓特视觉赋能企业AI训练 - 品牌2026
  • 黑客内网渗透第一课:ARP欺骗攻击实战与防御
  • 闭眼入!8个AI论文软件测评:本科生毕业论文写作必备工具推荐
  • 计算机毕业设计springboot基于Spark的豆瓣电影数据分析与可视化系统 SpringBoot框架下结合Spark的电影信息可视化分析与决策支持系统 影视数据挖掘及智能推荐平台
  • 2026年度权威发布:最新铝合金电缆厂家实力与技术创新深度解析 - 品牌推荐
  • 淘宝评论API接入后
  • ARP攻击详解:为什么局域网这么脆弱?个人与企业防护指南
  • 2026年评价高的高速卷帘门公司推荐:快速门安装、磁吸门帘、钢质抗风门、PVC快速门、pvc堆积式快速门选择指南 - 优质品牌商家
  • 柴油发电机组哪个牌子技术先进,热门品牌大揭秘 - 工业品牌热点
  • Jam 陷阱
  • 融合与重构:从EasyDSS一站式视频云平台看流媒体技术如何重塑企业交互边界
  • 实战演练:用ARP实现中间人攻击,以及如何发现它
  • 2026蛋白棒专用设备推荐 供应商+价格+机型全指南 - 包罗万闻
  • 免费!开源!高帧率!这款iOS+Android投屏神器,终于有人把它讲清楚了
  • 2026年出境旅行社推荐:基于多场景实测评价,针对服务标准化与安全隐忧痛点精准指南 - 品牌推荐