WPF开发的实用小工具 - 快捷悬浮菜单

本文由网友投稿,Dotnet9站长整理。站长觉得这小工具很实用,站长家里、公司也在尝试使用了。

行文目录:

  1. 这工具有什么用?

  2. 正文

  3. 源码获取及应用下载体验

  4. 站长的建议

1. 这工具有什么用?

问:操作系统安装的应用在哪里启动?

答:

  1. 左下角的操作系统开始菜单;

  2. 操作系统任务栏;

  3. 操作系统桌面快捷方式

回答正确,给10分!

大家主要在这三个地方找应用,大家有想过,把这些应用的快捷方式集中到一处吗?想要什么应用,鼠标只要简单一滚动,看到目标应用一点就启动了,看看下面的操作是不是你想要的?

快捷查找应用并启动

市面上有很多类似的软件小工具,做得功能可能更强大,但谁叫我们是程序员,不搞点自己开发的小玩意儿,那还有面出去说道说道?哈哈哈,下面是站长参考作者的开源项目,提取其中的一种风格做出来的(vs 2019 + .net 5,最近交流才知道,作者暂时去掉了水平菜单,笑哭了,希望作者后面加上):

水平菜单

2.正文

前言

看最近(站长注:博客园WPF版块)比较冷清,我来暖暖场。

2020-10-29

【新更新】

  1. 新增托盘。

  2. 新增换肤。

  3. 透明度切换。

【环境】

Visual Studio 2019,dotNet Framework 4.0 SDK

本项目采用MVVM模式,简单介绍功能代码:

  1. 获取主监视器上工作区域的尺寸。

  2. 并设置当前主窗体高度,设置窗体的Left与Top 到最右侧。

private Rect desktopWorkingArea;
desktopWorkingArea = System.Windows.SystemParameters.WorkArea;
this.Height = desktopWorkingArea.Height / 2;
this.Left = desktopWorkingArea.Width - this.Width;
this.Top = desktopWorkingArea.Height / 2 - (this.Height / 2);
  1. 移动窗体只允许Y轴 移动,调用Win32 的 MoveWindow。

#region 移动窗体
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{anchorPoint = e.GetPosition(this);inDrag = true;CaptureMouse();e.Handled = true;
}protected override void OnMouseMove(MouseEventArgs e)
{try{if (inDrag){System.Windows.Point currentPoint = e.GetPosition(this);var y = this.Top + currentPoint.Y - anchorPoint.Y;Win32Api.RECT rect;Win32Api.GetWindowRect(new WindowInteropHelper(this).Handle, out rect);var w = rect.right - rect.left;var h = rect.bottom - rect.top;int x = Convert.ToInt32(PrimaryScreen.DESKTOP.Width - w);Win32Api.MoveWindow(new WindowInteropHelper(this).Handle, x, (int)y, w, h, 1);}}catch (Exception ex){Log.Error($"MainView.OnMouseMove{ex.Message}");}
}protected override void OnMouseLeftButtonUp(MouseButtonEventArgs e)
{if (inDrag){ReleaseMouseCapture();inDrag = false;e.Handled = true;}
}
#endregion
  1. 在Tab键+Alt键切换时隐藏当前窗体。

WindowInteropHelper wndHelper = new WindowInteropHelper(this);int exStyle = (int)Win32Api.GetWindowLong(wndHelper.Handle, (int)Win32Api.GetWindowLongFields.GWL_EXSTYLE);exStyle |= (int)Win32Api.ExtendedWindowStyles.WS_EX_TOOLWINDOW;
Win32Api.SetWindowLong(wndHelper.Handle, (int)Win32Api.GetWindowLongFields.GWL_EXSTYLE, (IntPtr)exStyle);

Tab + Alt隐藏当前窗体
  1. 在窗体加载完成去注册表读取安装的应用(还有系统桌面),获取应用路径后提取.ICO转换为.PNG保存。

读取安装应用
  1. 剩下的代码都是wpf中的动画和自动定义控件的代码。

【效果图预览】

竖直菜单

2020/11/09

【新更新】

滚动增加动画

【效果图预览】

竖直滚动动画

竖直菜单隐藏

竖直菜单折叠

竖直菜单切换

2020/11/19

【新更新】

  1. 新增drag移动。

操作使用说明:在主页面右键后会出现虚线边框然后就可以修改当前应用的位置,但是并没有做保存。下次启动后还是会默认排序。

  1. 修改查找已存在引用不会找到卸载。

【效果图预览】

修改bug

2020/11/20

【新更新】

  1. 新增移除应用。

  2. 编辑时不显示按钮。

  3. 编辑时不走动画。

【效果图预览】

可删除

3. 源码获取及应用下载体验

源码下载地址:SoftWareHelper

SoftWareHelper

下载解压后体验:点击下载

作者投稿文章:

  • Wpf 开发的实用小工具(附源码)持续更新

  • Wpf 开发的实用小工具(附源码)持续更新(二)拖动应用

  • Wpf 开发的实用小工具(附源码)持续更新(三)移除应用

4. 站长建议

作者也是凭着一股热情,一直在更新该项目,大家有需要可以通过上面的链接进行下载、使用,觉得不错,不要忘了给个star哦:SoftWareHelper。

SoftWareHelper仓库

站长在接到作者投搞之前,也在博客园关注到了作者发布的第一篇文章,并下载项目进行了体验,觉得其中水平的快捷菜单不错,于是提取出来进行了修改(小部分想法已经实现,其余待抽空完成):

  • 菜单通过配置文件配置,因为操作系统可能装了太多应用,不需要全部加载:已实现

  • 支持exe拖拽(或者系统生成的快捷方式拖拽)添加:已实现

  • 支持网址配置(点击打开指定网址,类似网页收藏快捷方式):已实现

  • 支持cmd命令配置(比如系统应用mstsc,远程桌面配置目标IP及端口,一键打开连接等):已实现

  • 提供界面配置菜单:未实现

  • 显示图标与文字:未实现

  • ....更多想法还在想

作者如果觉得上面的想法可以,不妨也考虑加上。

站长先不要脸的奉上基于作者开源项目的修改版,很简陋的一个版本:QuickApp

QuickApp

除了上面站长自己的魔改版想法外,还有下面的小建议,希望作者在原项目上能考虑:

  • 保留原水平菜单的展示方式,最好桌面上、下、左、右都支持才好(可动态切换位置);

  • 换肤目前只有lignt和dark两种,后面可以适当扩展(用换背景色的方式应该可以);

大家还有什么建议?欢迎在文章下方留言,或者点击上面原作者博文留言,集思广益,大家一起做出一个有意思的小工具出来!!!

感谢

谢谢网友投稿

  • 博客园博主:驚鏵

欢迎大家向站长投稿文章,或推荐WPF项目或者控件库哦。

资源分享

谢谢您的支持,需要任何资源,只需要在公众号后台回复对应数字即可,注:只回复【数字】中的数字:

  • 【01】dotnet

  • 【02】java

  • 【03】android

  • 【04】C++

  • 【05】qt

  • 【06】react

想要的资源本号没有资源链接失效,请【公众号后台留言】或【加我微信】。另:大部分资源可在我的网站搜索哦:https://dotnet9.com

微信中外链无法访问,可点击下方阅读原文查看。

WPF开发的实用小工具 - 快捷悬浮菜单相关推荐

  1. Web开发中实用小工具

    1.文件差异比较工具  Beyond Compare Beyond Compare是一套超级的文件及目录比较工具, 不仅可以快速比较出两个目录的不同,还可以详尽的比较文件之间的内容差异, 而且可以任意 ...

  2. 基于 JavaFx 搭建的实用小工具集合 xJavaFxTool

    项目简介: gitee地址:xJavaFxTool GitHub地址:xJavaFxTool xJavaFxTool交流QQ群:== 387473650 == xJavaFxTool是使用javaFx ...

  3. 【实用小工具】开发一个网页版LED点阵绘图模拟器

    LED点阵显示控制实验,始终是微机系统.单片机控制等硬件实验中重要的一节. 实验内容包括控制显示,图案位置计算,完整图案设计等等步骤.其中完整图案的设计尤其是复杂图案或汉字总是需要手动计算位置,非常的 ...

  4. JavaFx 实用小工具超 60+ 大集合

    怎么JavaFx的资料那么少?是不是已经被时代淘汰了呢? 淘不淘汰不敢断言,但是在知乎上曾经看过有人这么说过,我觉得也是蛮有道理的: 所以说,如果小伙伴们是自己感兴趣想做一些GUI小工具的话,用用Ja ...

  5. 利用Python3开发一款小工具(界面的设计)

    前面在<利用Python3开发一款小工具(引言)>文章中,对我们的需求进行了分析.为了能够让用户运行该工具,因此我们需要一个ui界面,而python中常用的工具就是pyqt,本文将使用py ...

  6. 程职场人必备微软出品的实用小工具

    系统增强工具PowerToys 下载地址:https://github.com/microsoft/PowerToys 什么是 Windows 系统中,最好的辅助工具? PowerToys 一定可以获 ...

  7. 人生时间计算器_工具拯救效率,高效拯救人生!70个全国工程人实用小工具+算量表格...

    工具拯救效率,高效拯救人生.对在线工具的选取与运用,并不是炫技,而是实实在在提升工作效率.而这份工程量自动计算表+使用小工具对于造价人员而言,都是非常好的实用工具,让你比别人更高效的完成工作. 内容简 ...

  8. Unity实用小工具或脚本—以对象方式访问MySql数据库

    一.前言         以对象方式处理MySql数据库顾名思义就是可以将每个数据库表作为一个类,没一条数据作为一个对象来进行操作,大致思路和我上一篇文章类似,这里不再赘述.文章后有资源下载地址,所使 ...

  9. 手电筒安卓_安卓实用小工具!智能工具箱特别版本安卓软件

    软件界面 序号:0037 名称:安卓智能工具箱 分类:Android--实用工具--智能工具 类型:apk 大小:7.58MB 语言:简体中文 版本:V18.1 简介:智能工具箱是安卓移动端的口袋工具 ...

最新文章

  1. 使用GoAccess分析Nginx日志
  2. 计算机组装安装与维护作业,计算机组装与维护的作业.pdf
  3. [文摘]标准的软件开发过程
  4. 一次Redis client组件性能分析
  5. [Oracle]使用滚动游标
  6. python面试题总结(7)--操作类
  7. 基于jquery的复选树的插件
  8. 前端大神:如何看待 React Server Components?
  9. 双粗虚线中间一条实线_一侧虚线一侧实线可以变道吗?双黄线中间是斜杠
  10. 水务信息化数据整合系统方案分析
  11. java的视频案例教学 值得下载
  12. 计算机制图孔中心线,机械制图中各种中心线绘制方法.docx
  13. Beyond Compare 报错 This license key has been revoked: 8454-8413
  14. 多多小程序(doodoo)发布1.0,基于node,vue开发的微信小程序系统
  15. Q1财报大超预期,“大象”百度成功“转身”?
  16. android电子书大全 下载
  17. 爬虫实战 | 爬取东方财富网股票数据
  18. android软件制作app下载地址,如何自己制作安卓apk软件?
  19. 51单片机基础之DS1302
  20. 《Dynamic Filter Networks》动态过滤网络

热门文章

  1. kafka 服务端消费者和生产者的配置
  2. BZOJ4590: [Shoi2015]自动刷题机
  3. django源码简析——后台程序入口
  4. Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
  5. 将字符串中的大写字母变成小写字母
  6. FireFox与IE的兼容
  7. java bean 工厂模式_深入理解Java的三种工厂模式
  8. 《超越需求:敏捷思维模式下的分析》—第1章 1.1节简介
  9. Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)(转)
  10. Android百度地图开发01之初体验