.Net
文章平均质量分 81
z971130192
这个作者很懒,什么都没留下…
展开
-
一场因为新需求引发的填坑——IE书签排序信息的读取
引用Github Chromium 项目起因需求是这样的:需要将IE中的全部书签同步到Edge,并且保留IE中的特定顺序。(PS:不知道为什么,现在还有人有同步IE书签的需求????)因为原始的项目代码是个缝合怪, 程序的本地是基于WPF,一部分书签合并的逻辑在WPF这,另一部分读取IE书签及顺序的代码在一个C++写的Dll中, 还有个一部分调用了另外的C++库来处理一些借口。接手到这个代码之后,发现真是一层套一层,一环连一环,真像一个中国结 ????,所以 就动手把所有逻辑用C# 重写了。分析原创 2021-01-19 22:34:11 · 180 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——C#调用COM的一个进阶使用方式
起因在那天,那群,有那么一人,问了关于一个封装后的一个COM接口库的问题,继而引发出了以下一系列问题。Introduction在上一篇中说了delegate* 这个神奇的函数指针,这个是C# 9.0 中添加的新的语法,可以参考这里C# 9.0。简单的来说就是通过使用delegate*,可以很方便的调用IL中的ldftn 和 calli指令,调用delegate*会使用calli指令。通过使用delegate* 可以非常方便的调用COM接口返回过来的虚函数表中的方法,而不用像之前要使用Emit等一系原创 2020-12-27 17:31:32 · 193 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——记C# Com接口调用的相关姿势
起因在那天,那群,有那么一人,问了关于一个封装后的一个COM接口库的问题,继而引发出了以下一系列问题。Introduction在Windows 中想对Shell做一些操作的话,肯定是绕不开COM的,比如:获取资源管理器中某个文件的邮件菜单、对某个文件的右键菜单进行扩充等。既然这样就绕不开通过C# 对COM对象的一些调用了,首先,用之前说过的一个Win32 API来举例:[DllImport("Shell32.dll")]public extern static int SHCreateItemF原创 2020-12-15 21:41:37 · 321 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——COM的那些事2
参考&&引用What Is a COM Interface?Creating an Object in COM这是一个开头上一篇大概写了一下COM 接口的结构、布局,这次就简短的说一下怎么创建一个COM的对象。创建一个COM 对象主要有两种方式:使用公开的方法。使用 CoCreateInstance 这个通用创建方法。因为我喜欢吃柚子 ,所以就拿水果来举个例子,例如叫IFruit。下面就可以开始创建水果这个对象的过程了。使用方法一一般来说使用这种方式都会有一个方法 例原创 2020-12-06 17:02:07 · 142 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——结构体的一些事
问题如果有这么一段代码 struct S { public int V1; } class A { public S SS{get;set;} } static void Main(string[] args) { var a = new A(); a.SS.V1 =原创 2020-11-28 15:44:26 · 150 阅读 · 0 评论 -
C# 使用Linq 获取一个数组的全排序
C# 使用Linq 获取一个数组的全排序问题代码问题给一个数组,例如{1, 2, 3},此数组的全排序为{1,2,3},{3,2,1},{2,3,1},{3,1,2},{1,3,2},{2,1,3}。代码 static List<List<int>> Fuck(List<int> vs) { if (vs.Cou...原创 2020-04-23 19:19:08 · 1084 阅读 · 0 评论 -
C#利用服务创建具有System权限指定Session的进程
1. 起因因为需要在锁屏界面和UAC界面搞点事情,经过测试,发现锁屏和系统弹出UAC 均是切换到了Windows 的安全桌面,一般Windows在启动后(这里说的Windows指的是Vista之后的)会有一个Default和一个安全桌面。这里的Default 就是普通程序运行的桌面,在弹出UAC 或者 锁屏的时候Windows则会自动切换到 安全桌面,不同桌面的消息等是隔离的。Windows...原创 2020-04-19 16:09:26 · 1154 阅读 · 0 评论 -
C# 检测Windows 是否锁屏
近来要实现程序查询Windows是否处于锁屏状态,没找到直接查询是否锁屏的API,通过Google 找到了在C++实现的查询Windows是否锁屏的代码,地址为:C++: check if computer is locked之后使用C#通过P/Invoke对相关API进行了一下使用测试,相关代码如下:1.准备首先是需要使用的三个Win32 API接口 [DllIm...原创 2019-10-14 20:30:40 · 3443 阅读 · 2 评论 -
MicroSoft Speech SDK V11 TTS 中文报错 Speak error '80004005'
在安装了MicroSoft Speech SDK V11 写了一个简单的例子想测试一下TTS好用不 ,如下:SpeechSynthesizer synth = new SpeechSynthesizer();synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (zh-CN, HuiHui)");synth.Set...原创 2019-08-20 20:01:46 · 2034 阅读 · 2 评论