分享一个WPF 实现 Windows 软件快捷小工具
分享一个WPF 实现 Windows 软件快捷小工具Windows 软件快捷小工具
作者:WPFDevelopersOrg
原文链接:https://github.com/WPFDevelopersOrg/SoftwareHelper
[*]框架使用.NET40;
[*]Visual Studio 2019;
[*]项目使用 MIT 开源许可协议;
[*]项目使用 MVVM 模式来实现详细学习和理解 WPF;
[*]项目中技术使用到
WindowsAPI 、Style、CustomControl、Json 序列化和反序列化、换肤 Dark|Light、动画、Hook 按键与鼠标、颜色拾取、截屏、DPI缩放、开机启动、NLog、转换器、禁止程序多开并唤醒之前程序等;
[*]欢迎下载项目进行魔改;
[*]更多效果可以通过GitHub|码云下载代码;
预览
启动页
https://files.mdnice.com/user/24276/3b292bc4-7428-43de-aba1-d2524064d151.gif
嵌入桌面
https://files.mdnice.com/user/24276/907da075-c9c6-4a08-8c9f-b887a1aa4f1c.png
悬浮桌面
https://files.mdnice.com/user/24276/434cafe7-65d3-4bca-8861-04553d1840cc.png
颜色拾取
https://files.mdnice.com/user/24276/01ab1172-10cb-4392-8792-1d7785a26f1f.gif
预览原文
启动页
https://files.mdnice.com/user/24276/3dae9f08-8c77-4d87-ae6c-9963c603f37a.gif
https://files.mdnice.com/user/24276/58b3f6c9-7f6c-41f5-832d-b7b947a781af.png
搜索定位功能 LeftAlt+(应用首字的首字母)
https://files.mdnice.com/user/24276/67cd44b0-d121-4868-9cb5-badffc78619f.png
托盘、换肤、透明度
https://files.mdnice.com/user/24276/15be406b-338b-42f5-acb1-a185ee80d3af.png
移动应用顺序
https://files.mdnice.com/user/24276/2b702973-f5c6-4570-b898-7ed73c9af31b.png
移除应用
https://files.mdnice.com/user/24276/a2506edd-bdb8-4b08-8732-be3c8b47c6f4.png
自动更新(失效)
https://files.mdnice.com/user/24276/e932d97b-7a40-4958-ae7f-12703b3adefc.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("");
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 按键
Hook 鼠标
颜色拾取
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]