Windows
文章平均质量分 81
z971130192
这个作者很懒,什么都没留下…
展开
-
一场因为新需求引发的填坑——IE书签排序信息的读取
引用Github Chromium 项目起因需求是这样的:需要将IE中的全部书签同步到Edge,并且保留IE中的特定顺序。(PS:不知道为什么,现在还有人有同步IE书签的需求????)因为原始的项目代码是个缝合怪, 程序的本地是基于WPF,一部分书签合并的逻辑在WPF这,另一部分读取IE书签及顺序的代码在一个C++写的Dll中, 还有个一部分调用了另外的C++库来处理一些借口。接手到这个代码之后,发现真是一层套一层,一环连一环,真像一个中国结 ????,所以 就动手把所有逻辑用C# 重写了。分析原创 2021-01-19 22:34:11 · 169 阅读 · 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 · 176 阅读 · 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 · 308 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——WinDbg的简单用法
参考&&引用SOS installerdds, dps, dqs (Display Words and Symbols)SOS.dll (SOS debugging extension)起因在那天,那群,有那么一人,问了关于一个封装后的一个COM接口库的问题,继而引发出了以下一系列问题。前期须知本次用到的几个Windbg命令如下:.chain 查看Windbg 加载的扩展.load 加载新的扩展到Windbg,通常使用为 .load xxxxxx 启动xxx为包含Dll名原创 2020-12-13 17:56:02 · 191 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——COM的那些事2
参考&&引用What Is a COM Interface?Creating an Object in COM这是一个开头上一篇大概写了一下COM 接口的结构、布局,这次就简短的说一下怎么创建一个COM的对象。创建一个COM 对象主要有两种方式:使用公开的方法。使用 CoCreateInstance 这个通用创建方法。因为我喜欢吃柚子 ,所以就拿水果来举个例子,例如叫IFruit。下面就可以开始创建水果这个对象的过程了。使用方法一一般来说使用这种方式都会有一个方法 例原创 2020-12-06 17:02:07 · 126 阅读 · 0 评论 -
一场因为想偷懒引发的那些事——COM的那些事1
参考&&引用The layout of a COM objectAdjustor thunksWhat Is a COM Interface?起因在那天,那群,有那么一人,问了关于一个封装后的一个COM接口库的问题,继而引发出了以下一系列问题。一些引子COM(Component Object Model)一个Winodws在很久之前提出的用于不同应用之间的组件复用模型,简单来说COM有点像C#里的interface。不同应用不管用的是C、C++、Java、C#,不用知道这个组原创 2020-11-28 22:09:13 · 169 阅读 · 0 评论 -
CEF 无法自动播放视频的问题
问题在WPF上用CefSharp 做Youtube 播放的时候发现,在新版CefSharp 中,YouTube 播放器的playVedio方法在载入的时候无法调用,根据相关API调用无法自动播放,但是通过用户点击或者控制台输入之后调用均无问题。原因经过调查,是在Chromium 66之后新添加了 Autoplay Policy,该政策行为如下:允许静音自动播放。在桌面客户端上,用户 Media Engagement Index 达到一定门口(就是用户之前开启声音播放过此视频)。顶级的 Fram原创 2020-11-12 22:35:39 · 3550 阅读 · 0 评论 -
C# 使用 Core Audio APIs 获取音频设备信息
1. 开头最一开始写这个的目的是为了控制播放和输出设备的音量,开启静音等。但是,在使用C#调用Com的时候发现了一个神奇的事情。// IMMDeviceEnumerator 为接口IMMDeviceEnumerator mMDeviceEnumerator = new IMMDeviceEnumerator();没错,可以实例化一个接口?神奇的操作????。所以,这篇的主要目的是写为什么可以实例化一个接口这么神奇的操作。想看实现获取音频设备列表 代码的直接看 下面, 想看为什么能实例化一个接口原创 2020-08-29 14:51:14 · 2590 阅读 · 2 评论