摘要: 本章介绍如何通过句柄,截取指定窗口内容,以及截取失败的场景 一、根据窗口句柄获取窗口截图 先创建一个测试窗口程序A,显示如下: 同时我们把此窗口的句柄显示到一个文本输入框内。 1 TestBox.Text = new WindowInteropHelper(this).Handle.ToString 阅读全文
posted @ 2022-01-05 21:43 唐宋元明清2188 阅读(69) 评论(0) 推荐(0) 编辑
摘要: 一、问题描述 在下面的截图中,我们发现,源码有添加一段注释。 然后通过Nuget包引用,在VS中用Reshaper反编译时,发现没有注释: 原来,DLL是默认不带注释的。即你生成一个DLL,给另一个项目引用,使用时看不到原有的注释。 二、解决方案 那如何将原有注释显示出来?可以在项目属性-生成-输出 阅读全文
posted @ 2021-12-17 16:09 唐宋元明清2188 阅读(33) 评论(2) 推荐(1) 编辑
摘要: WPF中全屏窗口,会自动隐藏任务栏。 那非全屏窗口如何隐藏任务栏?甚至有没有一种场景,隐藏任务栏后自定义一套系统任务栏来显示? 以下会分阶段讲述一些概念,任务栏、查找窗口、控制窗口显示。 1. 主屏任务栏 任务栏,其实也是一个窗口,主屏的任务栏名称是"Shell_TrayWnd"。 所以可以通过名称 阅读全文
posted @ 2021-10-01 22:26 唐宋元明清2188 阅读(530) 评论(0) 推荐(4) 编辑
摘要: WPF窗口设置属性ResizeMode="NoResize"时,回到桌面后,点击任意应用,都会将此窗口激活。 我们来看下详细操作: 1. WPF窗口设置属性ResizeMode 2. 启动测试程序,显示窗口 3. 在任务栏的右键菜单中,点击显示桌面(也可以使用快捷键win+D,回到桌面) 4. 点击 阅读全文
posted @ 2021-09-30 09:15 唐宋元明清2188 阅读(143) 评论(0) 推荐(3) 编辑
摘要: reshaper是个好工具,能帮助我们提升开发效率,比如本文要介绍的全局代码清理功能。 如果你的VS安装了reshaper,可以通过Ctrl+E+C快捷键打开代码清理窗口。 代码清理,可以格式化多种文件内的内容、优化using引用、优化各种冗余代码等。 如果你觉得以上功能太多,可以复制一个,然后自定 阅读全文
posted @ 2021-08-18 16:29 唐宋元明清2188 阅读(79) 评论(0) 推荐(1) 编辑
摘要: 1 /// <summary> 2 /// 判断类型是否为可操作的列表类型 3 /// </summary> 4 /// <param name="type"></param> 5 /// <returns></returns> 6 public static bool IsList(this Ty 阅读全文
posted @ 2021-08-07 15:15 唐宋元明清2188 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 本文介绍对列表进行创建及赋值的反射操作 我们现在有TestA、TestB类,TestA中有TestB类型列表的属性List,如下: 1 public class TestA 2 { 3 public List<TestB> List { get; set; } 4 } 5 public class 阅读全文
posted @ 2021-08-07 15:15 唐宋元明清2188 阅读(52) 评论(0) 推荐(1) 编辑
摘要: 在C盘创建、移动文件,如果当前不是管理员身份,是没办法直接操作。 如果当前程序有管理员权限,那可以直接操作。 但是,添加管理员权限启动,会弹出用户确认提示框。 在某些场景下,其实是不想让用户看到这样的确认框,会影响用户体验。本文来讲下如何获取权限默默的对C盘进行操作~ 对文件/文件夹添加权限控制 我 阅读全文
posted @ 2021-07-03 15:45 唐宋元明清2188 阅读(357) 评论(0) 推荐(1) 编辑
摘要: 1、鼠标 可以通过Mouse相关的事件参数MouseButtonEventArgs中的数据,e.StylusDecice==null表示没有触摸设备,所以设备为鼠标 2、触笔 or 触摸 根据StylusDown事件参数StylusDownEventArgs, e.StylusDevice.Tabl 阅读全文
posted @ 2021-06-26 00:51 唐宋元明清2188 阅读(139) 评论(2) 推荐(1) 编辑
摘要: Button的MouseDown事件 WPF的Button控件,鼠标点击时,MouseDown事件没有触发。 经确认,Button的MouseDown被内部处理了。下面是基类ButtonBase的部分代码: Mouse的其它事件也是如此: 官网的说明: 所以,MouseDown、MouseUp、Mo 阅读全文
posted @ 2021-06-26 00:30 唐宋元明清2188 阅读(239) 评论(0) 推荐(1) 编辑
摘要: 系统有很多光标类型 :Cursors 类 (System.Windows.Input) | Microsoft Docs 本章介绍如何自定义光标、并动态切换光标类型。 动态切换光标类型 以白板书写为例:鼠标操作时,Cursor为红点;触摸时,Cursor为空; 1 public MainWindow 阅读全文
posted @ 2021-06-10 22:37 唐宋元明清2188 阅读(151) 评论(0) 推荐(2) 编辑
摘要: 当程序运行,窗口已经加载后,如果修改屏幕分辨率,会影响窗口的正常显示。 举个案例: 悬浮窗口,显示在屏幕右下角。当分辨率、文本显示比例变更后,窗口位置可能会超出屏幕范围。 所以当屏幕变更时,我们需要知道准确的时机,然后针对的处理。 通过窗口消息监听屏幕显示变更 对窗口添加钩子 1 var windo 阅读全文
posted @ 2021-06-08 01:16 唐宋元明清2188 阅读(252) 评论(1) 推荐(1) 编辑
摘要: 大家都知道prop、propg输入快捷键。 当前我们需要生成一段包含属性和字段的代码时,可以propfull。 propfull在安装了reshaper后,会被隐藏掉。没关系,直接敲propfull,然后按下Tab,就能直接生成代码段了。 生成代码段后,连接按Tab键,对相关名称和类型进行修改。 自 阅读全文
posted @ 2021-05-31 10:09 唐宋元明清2188 阅读(331) 评论(1) 推荐(1) 编辑
摘要: 有一些UI自动化测试框架,能够实现自动化测试。 本文介绍Peer(微软的TAF技术),也可以实现自动化测试,或是对其他进程进行UI操作。下面是案例~ 在界面上添加俩个按钮: 并处理相应的点击事件: 1 private void Test1Button_OnClick(object sender, R 阅读全文
posted @ 2021-05-19 09:02 唐宋元明清2188 阅读(400) 评论(0) 推荐(1) 编辑
摘要: ConfigureAwait 参数为bool类型。true:尝试将延续任务封送回原始上下文 我们一般使用的是false,用于避免强制在原始上下文或调度程序中进行回调。 原理: 以await DoSomeThingAsync().ConfigureAwait(false)为例。 await等待返回后, 阅读全文
posted @ 2021-03-01 00:52 唐宋元明清2188 阅读(182) 评论(0) 推荐(1) 编辑