2021-01-02
作者:互联网
【C#】将win10任务视图功能升级成任务管理器
这是一个旨在改善windows平板的桌面应用使用体验的程序
对于正常的win10桌面模式来说,任务视图的所有功能都可以用任务栏来替代,显得这个功能很没用。
同时,对于win10的平板模式,任务视图只能关闭窗口,很多桌面应用程序都会有后台进程,导致平板模式下运行某些桌面应用体验极差。虽然任务视图使用起来很方便,但不能想安卓的任务视图那样直接清理后台进程。
我写了这个程序,主要就是为了改善surface和其他windows平板的桌面应用体验。
它是如何实现的
这个程序的原理很简单,就是将某些程序的后台进程组成一个名单,然后每隔一段时间(我设置为1秒)检测这些进程用没有正在运行,如果正在运行,就打开一个完全透明的窗体,这个窗体会出现在任务视图中但不会出现在任务栏中。同时订阅这个窗体的Closing事件,kill对应的进程。
var runnings = from process in Process.GetProcesses()
select process.ProcessName;
var morthereds = new List<string>();
HousemaidOptions.MotheredProcesses.ForEach(i =>morthereds.Add(i));
foreach (var processName in morthereds)
{
if (!AcceaccessoriesDictionary.ContainsKey(processName))
{
if (runnings.Contains(processName))
{
AttachedWindow acce = new AttachedWindow(processName);
acce.Closed += AcceaccessoryClosed;
acce.StateChanged += CallContorlPanel;
AcceaccessoriesDictionary.Add(processName,acce);
acce.Show();
}
}
else
{
if (!runnings.Contains(processName))
{
AcceaccessoriesDictionary[processName].Close();
AcceaccessoriesDictionary.Remove(processName);
GC.Collect();//强制进行垃圾回收
}
}
}
var acceKyes = new List<string>(AcceaccessoriesDictionary.Keys);
foreach(var acceKey in acceKyes)
{
if((AcceaccessoriesDictionary[acceKey] as AttachedWindow).IsClosed)
{
AcceaccessoriesDictionary.Remove(acceKey);
GC.Collect();//强制进行垃圾回收
}
if (!morthereds.Contains(acceKey))
{
(AcceaccessoriesDictionary[acceKey] as AttachedWindow).Handled = true;
AcceaccessoriesDictionary[acceKey].Close();
AcceaccessoriesDictionary.Remove(acceKey);
GC.Collect();//强制进行垃圾回收
}
AcceaccessoriesDictionary是一个Dictionary<string, Window>,用于存放所有窗体,通过把进程名作为key获取相应的窗体对象。
private Dictionary<string, Window> AcceaccessoriesDictionary = new Dictionary<string, Window>();
实际使用效果
使用效果如上图↑ 单击后台进程上的X就可以直接结束进程
如果你呼出这些透明的窗体,实际上它们并不会出现,而是打开这个程序的控制面板,在这个控制面板上你可以看到所有的进程,可以手动将进程添加监管或是取消监管,你自定义的名单将会存储在程序同目录下的Options.ini中。
性能和资源占用情况
实测下来内存占用一般在15-30MB,CPU占用可以忽略不计。
源代码:
v1.0
链接:https://pan.baidu.com/s/1wFpZ4_fpnXsuxJAjV-6TIg
提取码:ibi4
复制这段内容后打开百度网盘手机App,操作更方便哦
已编译的exe程序:
v1.0
链接:https://pan.baidu.com/s/1jqCBnlS7alEcRaYPbKfY4A
提取码:fe5t
复制这段内容后打开百度网盘手机App,操作更方便哦
AutoStartup.exe的作用是将Matrix Housemaid for Surface.exe通过读写注册表添加的开机启动项,需要管理员权限,而Matrix Housemaid for Surface.exe不需要。
标签:02,01,acceKey,AcceaccessoriesDictionary,acce,视图,processName,2021,进程 来源: https://blog.csdn.net/Lunatic_Will/article/details/112120217