分享一个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 …

只让输入数字、字母、中文的输入框

1.输入框只能输入字母和下横线的正则表达式 <input type"text" onkeyup"this.valuethis.value.replace(/[^_a-zA-Z]/g,)" onpaste"this.valuethis.value.replace(/[^_a-zA-Z]/g,)"> 2.只能输入数字和英文 <input type"text" …

华为手机logcat不出日志解决方案

进入拨号界面输入&#xff1a;*#*#2846579#*#* 依次选择ProjectMenu---后台设置----LOG设置---LOG开关 点击打开转载于:https://www.cnblogs.com/liugangBlog/p/8058259.html

Android之启动奔溃提示异常java.lang.SecurityException: Permission Denial: startForeground

1 问题 适配Android高版本,启动奔溃,提示异常 java.lang.SecurityException: Permission Denial: startForeground from pid=1824, uid=10479 requires android.permission.FOREGROUND_SERVICEat android.os.Parcel.createException(Parcel.java:

【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…

C#中二进制和流之间的各种相互转换

一. 二进制转换成图片间的转换 12345MemoryStream ms new MemoryStream(bytes); ms.Position 0; Image img Image.FromStream(ms); ms.Close(); this.pictureBox1.Image二. C#中byte[]与string的转换代码 1. 123System.Text.UnicodeEncoding converter new System.Text.Uni…

ASCII码16进制对照表

ASCII码对照表 ASCII&#xff08;American Standard Code for Information Interchange&#xff0c;美国信息互换标准代码&#xff0c;ASCⅡ&#xff09;是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统&#xff0c…

如何获得带时间的ping的结果

ping 192.168.1.91 | awk {print strftime("%Y-%m-%d %H:%M:%S") "\t" $0} 转载于:https://blog.51cto.com/351842/2051815

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

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

王高利:Apache Httpd负载均衡Tomcat并实现Session Sticky和Session Cluster

Apache Httpd负载均衡Tomcat并实现Session Sticky和Session Clusterhttp://anyisalin.blog.51cto.com/10917514/1766736转载于:https://blog.51cto.com/wanggaoli/1770659

对比C#聊聊C++大一统的初始化运算符 {}

一&#xff1a;背景 最近发现 C 中的类型初始化操作&#xff0c;没有 {} 运算符搞不定的&#xff0c;蛮有意思&#xff0c;今天我们就来逐一列一下各自的用法以及汇编展现&#xff0c;本来想分为 值类型 和 引用类型 两大块&#xff0c;但发现在 C 中没这种说法&#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…

linux下永久添加静态路由

在linux下永久添加静态路由有两种方法&#xff1a; 添加路由的命令&#xff1a; 1&#xff0c;route add route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0#添加一条静态路由 route add default gw 192.168.0.1#添加默认路由 route del -net 192.168.1.0/24 gw 192.…

【ArcGIS微课1000例】0020:关于ArcCatalog,你知道多少?

文章目录 一、ArcCatalog简介1. ArcCatalog启动和关闭2. ArcCatalog界面3. 菜单栏4. 目录树5. 搜索窗口6. 主窗口7. 工具栏二、ArcCatalog主要功能1. 文件夹连接2. 添加空间数据库连接3. 文件类型的添加和移除4. 文件特性的显示设置5. 导出数据6. 查看数据7. ArcCatalog中图层的…