程序异常退出后,托盘残留图标清理方法(C#)

  程序猿对于宕机再熟悉不过了,如果一个程序异常退出,那我们只能在Windows日志中找到它的踪迹;如果它是一个托盘程序,异常退出后,它会停留在托盘中久久不能离去,直到我们的鼠标从它身上划过;如果一个程序被另一个守护程序不断的杀掉、重启,那么它的结果会如下图所示,

  请注意!!这不是扫雷!!没错,这正是残留的图标。解决方法其实很简单,在程序每次开启前,向托盘窗口发送鼠标经过消息WM_MOUSEMOVE,使其刷新。

  首先要明确一点,托盘包括显示区域和溢出区域,所以需要同时刷新,防止遗漏。可以用Spy++鼠标右键选择“突出显示”,窗口轮廓就会闪烁,SysPager和NotifyIconOverflowWindow。

代码如下:

using System;
using System.Runtime.InteropServices;public class TaskBarUtil
{struct RECT{public int left, top, right, bottom;}public static void RefreshNotification(){var NotifyAreaHandle = GetNotifyAreaHandle();if (NotifyAreaHandle != IntPtr.Zero)RefreshWindow(NotifyAreaHandle);var NotifyOverHandle = GetNotifyOverHandle();if (NotifyOverHandle != IntPtr.Zero)RefreshWindow(NotifyOverHandle);}private static void RefreshWindow(IntPtr windowHandle){const uint WM_MOUSEMOVE = 0x0200;RECT rect;GetClientRect(windowHandle, out rect);for (var x = 0; x < rect.right; x += 5)for (var y = 0; y < rect.bottom; y += 5)SendMessage(windowHandle, WM_MOUSEMOVE, 0, (y << 16) + x);}private static IntPtr GetNotifyAreaHandle(){var TrayWndHandle = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "Shell_TrayWnd", string.Empty);var TrayNotifyWndHandle = FindWindowEx(TrayWndHandle, IntPtr.Zero, "TrayNotifyWnd", string.Empty);var SysPagerHandle = FindWindowEx(TrayNotifyWndHandle, IntPtr.Zero, "SysPager", string.Empty);var NotifyAreaHandle = FindWindowEx(SysPagerHandle, IntPtr.Zero, "ToolbarWindow32", string.Empty);return NotifyAreaHandle;}private static IntPtr GetNotifyOverHandle(){var OverHandle = FindWindowEx(IntPtr.Zero, IntPtr.Zero, "NotifyIconOverflowWindow", string.Empty);var NotifyOverHandle = FindWindowEx(OverHandle, IntPtr.Zero, "ToolbarWindow32", string.Empty);return NotifyOverHandle;}[DllImport("user32.dll", SetLastError = true)]static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, string windowTitle);[DllImport("user32.dll")]static extern bool GetClientRect(IntPtr handle, out RECT rect);[DllImport("user32.dll", CharSet = CharSet.Auto)]static extern IntPtr SendMessage(IntPtr handle, UInt32 message, Int32 wParam, Int32 lParam);
}
TaskBarUtil.RefreshNotification();

托盘又恢复往日简洁 ^_^

转载于:https://www.cnblogs.com/boxy/p/11402966.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汪劲:生命系统中的非平衡物理学

来源&#xff1a;集智俱乐部作者&#xff1a;汪劲编译&#xff1a;袁郭玲编辑&#xff1a;邓一雪导语非平衡物理学将在生物应用中发挥重要作用&#xff0c;如酶动力学、新陈代谢、基因调控&#xff0c;细胞的结构、功能和动力学&#xff0c;生理学、癌症、分化和发育&#xff0…

虚拟现实和元宇宙的最大短板在哪里?

出品&#xff1a;科技智谷编辑&#xff1a;王晓东虚拟现实和元宇宙面临的最大问题不是技术问题而是功能问题。在所有关于Metaverse以及虚拟现实或VR将给我们的生活带来什么的讨论中&#xff0c;有一个很大的功能问题被忽略了。正如几大巨头宣传的那样&#xff0c;Metaverse是一…

解密通往元宇宙的三大入口,VR先上AR紧跟,但脑机接口才是未来

来源: 智东西编辑&#xff1a;智东西内参VR、AR和脑机接口&#xff0c;谁是人类通往元宇宙的合适入口&#xff1f;VR/AR/脑机接口是集合了微显示、传感器、芯片和算法等多项技术在内的下一代人机交互平台。回顾整个人机交互发展历程&#xff0c;我们看到人机交互的指令输入形式…

python enumerate用法总结(转)

原文链接&#xff1a;https://blog.csdn.net/churximi/article/details/51648388 enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举、列举的意思对于一个可迭代的&#xff08;iterable&#xff09;/可遍历的对象&#xff08;如列表、字符串&#xff09;&…

特约专栏丨孙茂松教授——自然语言处理一瞥:知往鉴今瞻未来

来源&#xff1a;中国人工智能学会文 &#xff1a;孙茂松人类语言&#xff08;即自然语言&#xff09;的重要性无论怎么讲都不为过。社会生物学之父爱德华威尔逊曾说过&#xff1a;“语言是继真核细胞之后最伟大的进化成就”。科普畅销书《信息简史》的作者詹姆斯格雷克也深刻地…

安全隐患:神经网络可以隐藏恶意软件

来源&#xff1a;AI科技大本营&#xff08;ID:rgznai100&#xff09;编译&#xff1a;禾木木凭借数百万和数十亿的数值参数&#xff0c;深度学习模型可以做到很多的事情&#xff0c;例如&#xff0c;检测照片中的对象、识别语音、生成文本以及隐藏恶意软件。加州大学圣地亚哥分…

ASP.NET MVC教程四:ASP.NET MVC中页面传值的几种方式

准备 在Models文件夹里面新添加Student实体类&#xff0c;用来模拟从Controller向View传递数据&#xff0c;Student类定义如下&#xff1a; using System; using System.Collections.Generic; using System.Linq; using System.Web;namespace MVCStudyDemo.Models {public clas…

量子计算,后摩尔时代计算能力提升的解决方案

来源&#xff1a;微信公众号蓝海长青智库原载于《学习时报》2022年3月2日刊作者&#xff1a;朱晓波1、陆朝阳1、潘建伟2,31 中科学技术大学合肥微尺度物质科学国家研究中心2 中国科学院院士3 中国科学技术大学量子计算是基于量子力学的全新计算模式&#xff0c;具有原理上远超经…

ASP.NET MVC教程六:两个配置文件详解

前言 在新建完一个MVC项目之后&#xff0c;你会发现整个整个项目结构中存在有两个web.config文件&#xff0c;如下图所示&#xff1a; 这两个配置文件&#xff0c;一个位于项目的根目录下面&#xff0c;一个位于Views文件夹下面&#xff0c;这两个配置文件有什么不同呢&#xf…

Nat. Commun. 速递:虚拟颅内脑电与神经动力学模型

来源&#xff1a;集智俱乐部作者&#xff1a;曹淼 编辑&#xff1a;邓一雪 导语时间-空间尺度动态演变的动力学系统建模&#xff0c;为研究大脑状态和状态转移的神经机制提供了理论基础。最近墨尔本大学曹淼等人的联合团队在Nature Communications发表论文&#xff0c;提出了虚…

ASP.NET MVC教程五:ASP.NET MVC中的路由

一、概述 在ASP.NET MVC架构中&#xff0c;控制器在3大核心构件中处于中心地位&#xff0c;通过控制器支配模型和视图&#xff0c;然而从浏览器发出的请求到控制器还需要路由的协助&#xff0c;路由将特定的请求和控制器的动作对应起来。 在ASP.NET MVC程序中&#xff0c;路由主…

一文梳理深度学习算法演进

来源&#xff1a;https://zhuanlan.zhihu.com/p/464515049作者&#xff1a;Peter潘欣编辑&#xff1a;蘑菇先生学习记涉及语音、图像、nlp、强化学习、隐私保护、艺术创作、目标检测、医疗、压缩序列、推荐排序等方向。文章较长&#xff0c;耐心读完会有收获。1. 前言如果说高德…

ASP.NET MVC教程八:_ViewStart.cshtml

一、引言 _ViewStart.cshtml是在ASP.NET MVC 3.0及更高版本以后出现的&#xff0c;用Razor模板引擎新建项目后&#xff0c;Views目录下面会出现一个这样的文件&#xff1a; 打开_ViewStart.cshtml文件&#xff0c;里面只有一行代码&#xff1a; 这行代码表示使用Views文件夹下的…

2021年全球十大工程成就,中国有几个? | 科技袁人

来源&#xff1a; 风云之声视频链接&#xff1a;西瓜视频&#xff1a;https://www.ixigua.com/7068180516549329415本视频发布于2021年2月25日&#xff0c;观看量已达7.4万次精彩呈现&#xff1a;2021年&#xff0c;中国工程院院刊《Engineering》组织了一个“全球十大工程成就…

formSelects-v4.js 基于Layui的多选解决方案

详情链接地址&#xff1a; https://hnzzmsf.github.io/example/example_v4.html#select_search_server1、闲谈杂趣v3传送门 v3文档其实思考了很久, 还是放弃了v3, 因为开发v3的时候很粗暴, 按照编程角度来看就是硬撸, 也怪自己实力有限, 所以反思了一下, 尝试着继续前行...…

将公平注入AI:机器学习模型即使在不公平数据上训练也能产生公平输出

来源&#xff1a;ScienceAI编译&#xff1a;绿萝如果使用不平衡的数据集训练机器学习模型&#xff0c;比如一个包含远多于肤色较浅的人的图像的数据集&#xff0c;则当模型部署在现实世界中时&#xff0c;该模型的预测存在严重风险。但这只是问题的一部分。麻省理工学院的研究人…

使用ngModel创建组件

angular/forms里有个接口用来实现支持[(ngModel)]&#xff0c;具体可查ControlValueAccessor&#xff0c;这边还未深入理解只是为了开发组件而初步了解 interface ControlValueAccessor {writeValue(obj: any): voidregisterOnChange(fn: any): voidregisterOnTouched(fn: any)…

制定城市大脑建设标准应遵循的十条原则探讨

作者&#xff1a;刘锋本文发表于2022年3月《中国建设信息化杂志》2015以来&#xff0c;城市大脑被提出并成为前沿科技和智慧城市建设领域的新热点。到2022年&#xff0c;全国已经有包括北京、上海、杭州、深圳、郑州、呼和浩特、合肥等数百个城市宣布建设城市大脑的规划。有包括…

图灵测试,时至今日还有意义吗?

来源&#xff1a;学术头条我们必须承认&#xff0c;机器运行时的很多中间状态&#xff0c;是在设计初始指令时无法预见的。机器自己也会感悟出很多知识。在这种情況下&#xff0c;我们有必要将机器视为智能的。艾伦图灵图灵测试由人工智能之父—艾伦图灵提出&#xff0c;指测试…

AI科普微视频丨深度学习如何帮助自动驾驶

来源&#xff1a;中国人工智能学会人工智能是如何产生的&#xff1f;人工智能的发展为什么充满曲折&#xff1f;为什么说图灵是人工智能之父&#xff1f;为加大AI科普力度&#xff0c;推动文化传播&#xff0c;中国人工智能学会推出了“AI科普微视频”栏目&#xff0c;以每期2~…