分享一个WPF 实现 Windows 软件快捷小工具

 分享一个WPF 实现 Windows 软件快捷小工具

Windows 软件快捷小工具

作者:WPFDevelopersOrg

原文链接:https://github.com/WPFDevelopersOrg/SoftwareHelper

  • 框架使用.NET40

  • Visual Studio 2019;

  • 项目使用 MIT 开源许可协议;

  • 项目使用 MVVM 模式来实现详细学习和理解 WPF

  • 项目中技术使用到WindowsAPIStyleCustomControlJson 序列化和反序列化换肤 Dark|Light动画Hook 按键与鼠标颜色拾取截屏DPI缩放开机启动NLog转换器禁止程序多开并唤醒之前程序等;

  • 欢迎下载项目进行魔改;

  • 更多效果可以通过GitHub[1]|码云[2]下载代码;

预览

启动页

439ed905d48a49ddbed125f39b6c6f47.gif

嵌入桌面

0b17a53556c874207b8b32ba09cbfa3b.png

悬浮桌面

6775f6ea89309d54418065f5ec4fcffd.png

颜色拾取

f94c0122aa763376d533e436d121f9ac.gif

预览原文

启动页

73aba0bb66748dd4f2884bffe79e50c4.gif42e4f594a3b1d1aed212aaf5ee1ce549.png

搜索定位功能 LeftAlt+(应用首字的首字母)

b026ec72a2a95dbb3fcb671fc2c5901f.png

托盘、换肤、透明度

7f7419cc99ae93141dc95c072423f5a8.png

移动应用顺序

057605ca75edc71e89f3b7bbfa6a56e0.png

移除应用

7d32e39adf190b71e2bbad3822750b14.png

自动更新(失效)

69ad98c908a27666b1f21477847044b6.gif

1)开机启动

private void appShortcutToStartup(){var startupDir = Environment.GetFolderPath(Environment.SpecialFolder.Startup);if (!Directory.Exists(startupDir)) return;var path = startupDir + "\\" + "SoftwareHelperStart" + ".url";if (!File.Exists(path))using (var writer = new StreamWriter(path)){var app = Assembly.GetExecutingAssembly().Location;writer.WriteLine("[InternetShortcut]");writer.WriteLine("URL=file:///" + app);writer.WriteLine("IconIndex=0");var icon = app.Replace('\\', '/');writer.WriteLine("IconFile=" + icon);}}}

2) 换肤 Dark|Light

using System;
using System.Configuration;
using System.Linq;
using System.Windows;namespace SoftwareHelper.Helpers
{/// <summary>/// Themes 帮助类/// </summary>public partial class ThemesHelper{/// <summary>/// 切换Themes/// </summary>/// <param name="isDark">true:Dark false:light</param>public static void SetLightDark(bool isDark){try{var existingResourceDictionary = Application.Current.Resources.MergedDictionaries.Where(rd => rd.Source != null).SingleOrDefault(rd => rd.Source.OriginalString.Contains("Light") || rd.Source.OriginalString.Contains("Dark"));var source = $"pack://application:,,,/SoftwareHelper;component/Themes/{(isDark ? "Dark" : "Light")}.xaml";var newResourceDictionary = new ResourceDictionary() { Source = new Uri(source) };App.Current.Resources.MergedDictionaries.Remove(existingResourceDictionary);App.Current.Resources.MergedDictionaries.Add(newResourceDictionary);//节点Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);config.AppSettings.Settings["Dark"].Value = isDark.ToString();config.Save(ConfigurationSaveMode.Modified);ConfigurationManager.RefreshSection("appSettings");}catch (Exception ex){Log.Error($"MainView.SetLightDark Error:{ex.Message}");}}public static bool GetLightDark(){bool dark;if (!bool.TryParse(string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["Dark"]) ? "false" : ConfigurationManager.AppSettings["Dark"], out dark)){dark = false;}else{dark = Convert.ToBoolean(string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["Dark"]) ? "false" : ConfigurationManager.AppSettings["Dark"]);}return dark;}}
}

Hook 按键[3]Hook 鼠标[4]颜色拾取[5]

参考资料

[1]

GitHub: https://github.com/WPFDevelopersOrg/SoftwareHelper

[2]

码云: https://gitee.com/WPFDevelopersOrg/SoftwareHelper

[3]

Hook 按键: https://gitee.com/WPFDevelopersOrg/SoftwareHelper/blob/master/SoftwareHelper/Helpers/KeyboardHook.cs

[4]

Hook 鼠标: https://gitee.com/WPFDevelopersOrg/SoftwareHelper/blob/master/SoftwareHelper/Helpers/MouseHelper/MouseHook.cs

[5]

颜色拾取: https://gitee.com/WPFDevelopersOrg/SoftwareHelper/blob/master/SoftwareHelper/Views/WindowColor.xaml

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

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

相关文章

学习环境配置:Manjaro、MSYS2以及常见软件

0.前言 在说Manjaro之前&#xff0c;要先说一下Linux发行版。对于各大发行版而言&#xff0c;内核只有版本的差异&#xff0c;最重要的区别就是包管理系统。常见的包管理系统包括&#xff1a;Pacman&#xff0c;Apt , Yum和Portage。在学习Linux的过程中&#xff0c;和大数人一…

【ArcGIS微课1000例】0017:ArcGIS测量距离和面积工具的巧妙使用

文章目录 1 交互式测量2 测量要素ArcGIS提供了快速测量距离和面积的工具,通过测量工具可对地图中的线和面进行测量。 工具条: 测量工具位于【工具】工具条上,如下图所示: 测量界面: 功能按钮简介: 可使用此工具在地图上绘制一条线或者一个面,然后获取线的长度与面的面…

[转]HTTP/3 未来可期?

2015 年 HTTP/2 标准发表后&#xff0c;大多数主流浏览器也于当年年底支持该标准。此后&#xff0c;凭借着多路复用、头部压缩、服务器推送等优势&#xff0c;HTTP/2 得到了越来越多开发者的青睐&#xff0c;不知不觉的 HTTP 已经发展到了第三代。本文基于兴趣部落接入 HTTP/3 …

【ArcGIS微课1000例】0018:ArcGIS设置相对路径和数据源

文章目录 ArcGIS设置相对路径ArcGIS设置数据源ArcGIS设置相对路径 菜鸟们在使用ArcGIS时经常会碰到将地图文档(.mxd)拷贝到别的电脑上或改变一个路径时,出现数据丢失的现象,具体表现为图层前面出现一个红色的感叹号,如下图所示。 出现以上问题的根本原因是数据GSS.tif的原…

AI 之 OpenCvSharp 安卓手机摄像头识别人脸

OpenCvSharp是OpenCv的包装器&#xff0c;相当于底层是OpenCv只是用.Net的方式调用底层的接口的实现&#xff0c;所以&#xff0c;从OpenCv的知识架构来讲&#xff0c;源码是一样一样的。就是换个语言写而已。1. OpenCvSharp 尽可能地以原生 OpenCV C/C API 风格为蓝本。2. Ope…

iVX低代码平台系列制作APP简单的个人界面

一、前言 我们知道&#xff0c;目前市场上开发app或者小程序这些应用&#xff0c;都离不开一个个人界面&#xff0c;就是类似下面的这种界面&#xff0c;我们可以利用iVX低代码平台来开发&#xff0c;简单快速&#xff0c;如果还有不知道iVX低代码平台是啥的&#xff0c;猛戳这…

[转]【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

前言 很多小伙伴反馈说&#xff0c;高并发专题学了那么久&#xff0c;但是&#xff0c;在真正做项目时&#xff0c;仍然不知道如何下手处理高并发业务场景&#xff01;甚至很多小伙伴仍然停留在只是简单的提供接口&#xff08;CRUD&#xff09;阶段&#xff0c;不知道学习的并发…

【ArcGIS微课1000例】0019:什么是Shapefile文件?Shapefile文件之全解

文章目录 Shapefile文件组成Shapefile文件创建Shapefile文件大小限制Shapefile文件注意事项ESRI Shapefile(shp),或简称shapefile,是美国环境系统研究所公司(ESRI)开发的一种空间数据开放格式。该文件格式已经成为了地理信息软件界的一个开放标准,这表明ESRI公司在全球的…

扼杀 304,Cache-Control: immutable

随着近些年社交网站的流行&#xff0c;越来越多的人学会了“刷”网页 ── 刷微博&#xff0c;刷朋友圈&#xff0c;刷新闻&#xff0c;刷秒杀页。这里的“刷”&#xff0c;就是刷新的意思&#xff0c;在浏览器里&#xff0c;你可以通过点击刷新按钮&#xff0c;或者用快捷键&a…

Eolink是国产API接口管理的无冕之王

一、传统API接口管理的缺陷 1、前言 项目开发我们都知道在一个项目团队中是由很多角色组成&#xff0c;最常见团队的就是前端开发工程师、客户端开发工程师、服务端开发工程师组成一个团队&#xff0c;团队之间进行合作&#xff0c;一般我们都离不开API接口管理和测试&#x…

【数据结构】二叉排序树

二叉排序树&#xff08;Binary Sort Tree&#xff09;又称二叉查找树&#xff08;Binary Search Tree&#xff09;&#xff0c;亦称二叉搜索树。 特点 二叉排序树或者是一棵空树&#xff0c;或者是具有下列性质的二叉树&#xff1a; 1、若左子树不空&#xff0c;则左子树上所有…

记一次 .NET 某电厂Web系统 内存泄漏分析

一&#xff1a;背景 1. 讲故事前段时间有位朋友找到我&#xff0c;说他的程序内存占用比较大&#xff0c;寻求如何解决&#xff0c;截图就不发了&#xff0c;分析下来我感觉除了程序本身的问题之外&#xff0c;.NET5 在内存管理方面做的也不够好&#xff0c;所以有必要给大家分…

[转]将图片转换为 latex 公式

一、官网链接及使用方法 官网链接&#xff08;跨平台&#xff09;: Mathpix 公式截图快捷键截图生成 latex 公式--------------------- 作者&#xff1a;man_world 来源&#xff1a;CSDN 原文&#xff1a;https://blog.csdn.net/mzpmzk/article/details/84140617 版权声明&…

在SQL Server2005中使用 .NET程序集

昨天完成了一个最简单的在数据库中创建标量值函数,今天主要完成表值函数,存储过程和用户定义类型在和.NET结合下的使用方法.1,表值函数所谓表值函数就是说这个函数返回的结果是一个Table,而不是单个的值.在.NET 中创建这样的函数,返回的结果是一个IEnumerable接口.这个接口非常…

AI作画的业界天花板被我找到了,AIGC模型揭秘 | 昆仑万维

一、前景 1、AI和AIGC的关系 人工智能&#xff08;Artificial Intelligence&#xff09;&#xff0c;英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 AIGC是继 UGC、PGC 之后新型利用AI技术自动生成内容的生产…

【ArcGIS微课1000例】0022:ArcGIS点(点坐标)自动连成线操作案例教程

ArcGIS中,可以将带三维坐标(X、Y、Z)的点/点集自动连成线,本文演示具体操作流程。 文章目录 实战演练GPS点数据下载实战演练 打开ArcMap软件,添加实验文件夹0022下的GPS轨迹点.shp矢量点数据(文末提供下载地址),该数据是由GPS RTK采集的河道点数据,首先需要将GPS点坐…

微信公众号 文章的爬虫系统

差不多俩个星期了吧&#xff0c;一直在调试关于微信公众号的文章爬虫系统&#xff0c;终于一切都好了&#xff0c;但是在这期间碰到了很多问题&#xff0c;今天就来回顾一下&#xff0c;总结一下&#xff0c;希望有用到的小伙伴可以学习学习。 1、做了俩次爬虫了&#xff0c;第…

OAuth认证与授权

什么是OAuth授权&#xff1f; 一、什么是OAuth协议OAuth(开放授权)是一个开放标准。允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息。而这种授权无需将用户提供用户名和密码提供给该第三方网站。OAuth允许用户提供一个令牌给第三方网站&#xff0c;一个…

SegmentFault Hackathon 文艺复兴

我有一个 idea&#xff0c;我想实现它&#xff0c;我正实现它&#xff0c;我已实现它。世界上存在一些好奇心旺盛、不爱墨守成规的人&#xff0c;略微偏执但又极度投入的他们崇尚自由&#xff0c;热衷用技术实现自己的想法&#xff0c;他们带着不羁的态度生活&#xff0c;利用编…