随笔分类 - 搬砖日记
搬砖时的随笔,主要是WPF\.NET\Windows\C#相关
摘要:前几天我通过改造微软的vhidmini2这个驱动示例,写了一个umdf的虚拟hid键盘,然后我发现,微软还提供了一个叫Virtual Hid Framework(VHF)的框架,专门用来实现虚拟hid设备,在kmdf和umdf上都支持(文档这么说的),所以就想着用VHF来重写一下上次的那个虚拟hid
阅读全文
摘要:在虚拟机、远程控制、或者诸如云电脑之类的应用中,我们经常能够看到虚拟设备的身影。对于初学者来说,从0到1实现一个虚拟设备或许非常困难,但从0.99到1改造一个虚拟设备就简单多了。本文根据微软提供的UMDF版本HID minidriver的示例代码,稍加改造,将其变成一个虚拟HID键盘设备。 HID
阅读全文
摘要:最近产品有个需求,需要在升级的时候阻止Windows系统进入自动睡眠。需求到手后,小搜了一下,搜到SetThreadExecutionState这个函数,相关的博客挺多,官方文档也挺清晰,想必应该是手拿把掐了,结果没想到连续踩了好几个坑。现在,我就把SetThreadExecutionState的基
阅读全文
摘要:离奇现象 大家在C#代码中有没有遇到过这样的问题:一个局部变量,上一秒还是非null的,下一秒就变成null了,中间只调用了一个非托管函数。 我前几天就遇到了这样的问题,问题代码长这样: private static PropVariant GetProperty(Window window, Pr
阅读全文
摘要:之前工作中搞过一段时间的wine,主要是解决一些第三方应用的安装或运行问题,后面好长时间没搞了,有次电脑出问题重装系统的时候整理文档,发现之前还写过一些日志,于是找时间把日志粗略整理了一下,分享出来供大家批评参考。 InkRecognizer不工作(COM组件/注册表缺失问题) 问题描述 希沃白板的
阅读全文
摘要:假设我们开发了一个C#脚本编辑器,利用Roslyn去执行用户所编写的脚本。这时候,如果用户想要引用一个nuget包,应该如何实现呢? 我们想要引用nuget包的话,只要能得到nuget包及其依赖包的所有程序集和资源文件就可以了。如何引用程序集,可以看这一篇:使用Roslyn脚本化C#时如何调用不包含
阅读全文
摘要:从C#9开始,可以使用record关键字来定义一个具有不可变属性的引用类型,编译器会为该类型生成大量的模板代码。C#10以后,record struct用来定义值类型,record class或record用来定义引用类型。 record(C# reference)这篇官方的文档中,介绍了recor
阅读全文
摘要:init关键字是C#9新增的语法,用于属性或索引器中定义访问器。使用init关键字定义的访问器具有init-only的特性,即只能在对象构造期间对属性或索引器元素进行赋值,对象构造完成后,不可以再修改属性或索引器元素的值。 init关键字解决了什么问题 实际上,我个人认为init-only属性和re
阅读全文
摘要:使用Roslyn的CSharpScript类运行C#脚本时,会默认包含一部分程序集,默认包含的程序集引用可以直接使用,而其他程序集则需要额外提供引用。本文简单描述了使用Roslyn的CSharpScript类实运行C#脚本时,如何引用程序集。 情景再现 首先创建一个C#类库,代码很简单,提供一个静态
阅读全文
摘要:
在Windows任务管理器的“启动应用”页签的右上角,有一个“上次BIOS所用时间”,这个时间可以通过注册表项来获取,注册表位置如下 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power\{FwPOSTTime} 该位置记录了上次BI
阅读全文
在Windows任务管理器的“启动应用”页签的右上角,有一个“上次BIOS所用时间”,这个时间可以通过注册表项来获取,注册表位置如下 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Power\{FwPOSTTime} 该位置记录了上次BI
阅读全文
摘要:Hybrid shutdown 自Win8.1开始,在休眠和完全关闭之外,多出一个“混合关闭(hybird shutdown)”的状态。在“控制面板\硬件和声音\电源选项\系统设置”中开启快速启动选项后,在开始菜单中选择关机,设备将进入混合关闭状态。混合关闭状态下,用户会话被关闭,而内核会话处于休眠
阅读全文
摘要:在C#中调用C++动态库导出的函数时,有时候需要封送一些复杂的数据结构,这时候不确定自己封送的数据的内存布局对不对,就想要弄个简单的C++项目模拟一下被调用的接口,检查一下C#的数据封送是否正确。 因为对C++项目基本上没任何了解,捣鼓了半天才搞定,所以这里简单记录一下过程,以加深记忆。 1. 首先
阅读全文
摘要:1. 我有一个netframework4.8的类库项目,里面提供了一个自定义控件,然后我按照以下方法为控件提供了默认样式 a) 添加Themes\Generic.xaml文件,文件中提供自定义控件的默认样式 <Style TargetType="MyControl"> <Setter Propert
阅读全文
摘要:问题描述 在下面这段代码中,我们给控件的某个属性设置了单向绑定,然后在代码的某处给这个属性显式地赋了值,结果会导致我们在这之前设置的绑定永久失效。 //外部给Text属性设置绑定 <TextBox Text="{Binding Name, Mode=OneWay}" /> //控件内部代码 priv
阅读全文

浙公网安备 33010602011771号