笑看天下无敌手 发表于 2022-9-2 10:15:33

分享一个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]
查看完整版本: 分享一个WPF 实现 Windows 软件快捷小工具