微软的 Visual Studio IDE 中提供了一个软件开发工具集 VSTO,通过 VSTO 可以支持在 .NET 中开发 Office 加载项,还允许创建能够执行这些加载项的 Office 文档文件...本地 VSTO 本地的 VSTO 会将 .NET 编译的 .DLL 加载项及其依赖项与为执行它而创建的 Office 文档存放在一起,例如 ISO 文件中。...恶意 ISO 文件 例如针对葡萄牙语用户的恶意 ISO 文件,其中包含一个恶意的 Word 文档文件与隐藏的 VSTO 加载项及其依赖项。...提示用户安装 加载隐藏的加载项 一旦用户允许安装,加载项将被执行: VSTO 安装提示 分析加载项,其中有经过编码和压缩的 PowerShell 代码: 核心代码 经过解码和解压缩后,可以看到该段代码为了从...例如,恶意 Word 文档从远程获取 VSTO 加载项: 远程 VSTO 下载的 DLL 加载项中,嵌入了下载加密的 ZIP 文件的代码。
顺便给大家介绍下,一个同样精彩的开发方式,使用Excel-DNA开发自定义函数加载项。...Excel-User-Define-Function-Introduce.html ExcelHome学导帖:http://club.excelhome.net/thread-951893-1-1.html 我在...开发自定义函数的利器,VSTO开发自定义函数在发布给用户机器使用时麻烦,要对注册表注册,需要管理员权限,但Excel-DNA开发的完全没有这些烦恼,用户双击即可打开使或进行加载项载入,下次打开Excel...用户发布友好,直接一个xll文件发给用户,用户不需安装即可使用,无需管理员权限,无需访问注册表权限,和xlam加载宏的效果一样。 1.10....开发非自定义函数以外的功能,如功能区开发等,没有VSTO来得方便 内容预告 今晚文字写得有点多,没时间录视频,明晚录个视频给大家感受下Excel-DNA的魅力,敬请期待。
在VS开发环境中,特别是VSTO的开发,微软已经现成地给开发者准备了设计器模式的功能区开发,相对传统的VBA、ExcelDna和其他方式的COM加载项开发来说,不需要手写xml功能区,直接类似拖拉窗体控件一样...有某些场景,想动态地加载菜单时,在设计器的功能区开发中,相对xml功能区,来得更容易,本篇给大家介绍两种场景。...具体场景 场景一、某些情况下才显示某个按钮 在Excel催化剂中,有一个【智能选区】的菜单,仅在用户选择数据区域,且仅选择一个单元格时,才会显示出来。...名称而非Label 结语 使用VSTO开发,可以有现成的功能区设计器模式可利用,无需手工书写xml功能区,作大量的回调函数处理等,并且在动态显示、隐藏控件、动态添加菜单子项等操作都非常灵活方便,不失为VSTO...开发的一大优势,虽然VSTO也有其弱点,但综合它带来的优势,笔者更喜欢使用VSTO来做开发。
新增功能20200902 在名称叫法上,用回加载项这个名称,防止大家和OFFICE的叫法对不上,OFFICE加载项,现在有3类,分别是COM加载项,普通加载项和Web加载项。 ?...以下这些系统自带的加载项如规划求解、数据分析库等,貌似对其管理也有点小问题。真要处理他们时,要回到Excel的原生加载项界面处理。...一、遍历本机或当前用户下的所有COM加载项插件 此处的插件清单仅为COM加载项插件,一般性的普通加载项不在此清单范围内,而且普通加载项一般出问题不多,下文也会简单说明如何维护普通加载项的插件。...三、修复选中插件因家庭学生版加载失败 如标题所示,此功能主要针对新电脑安装自带的OFFICE,在安装插件后,始终加载不上来,可以使用此项去修复试试。...六、打开OFFICE加载项文件夹 前面提到,本工具仅对COM加载项的插件进行管理,普通加载项如Excel的以xlam结尾的文件(使用xll技术开发的插件,同样会落在此清单范围内,如Excel催化剂开发的自定义函数和
如果换成是VSTO的宿主项PictureBox,就完美解决了。 两种不同窗体控件方式插入图片 例如下图中的,用鼠标右键事件,调出上下文菜单。...具体实现 使用VSTO的PictureBox容器,将其图片属性设置成对应的图片对象即可,此处传入的图片对象是Image对象,不必像VBA方法里的只能传入文件全路径,可以方便某些数据库等方式存储二进制图片格式时...hasBordersMargin, bool isLookupFromRangValue, int offsetRow, int offsetCol) { string picName = Guid.NewGuid...,可拿到文件名,我初始的单元格地址,为后面有可能插入过行、列来重新定位。...这当中可以绑定一些PictureBox事件和上下文菜单等,如: pictureBox.MouseDoubleClick += PictureBox_MouseDoubleClick;
一、遍历本机或当前用户下的所有COM加载项插件 此处的插件清单仅为COM加载项插件,一般性的普通加载项不在此清单范围内,而且普通加载项一般出问题不多,下文也会简单说明如何维护普通加载项的插件。...三、修复选中插件因家庭学生版加载失败 如标题所示,此功能主要针对新电脑安装自带的OFFICE,在安装插件后,始终加载不上来,可以使用此项去修复试试。...经过复制后,经反馈是有效的,一般VSTO技术开发的插件,都因为此项的修复得以改善,正常使用。...六、打开OFFICE加载项文件夹 前面提到,本工具仅对COM加载项的插件进行管理,普通加载项如Excel的以xlam结尾的文件(使用xll技术开发的插件,同样会落在此清单范围内,如Excel催化剂开发的自定义函数和...其快捷的打开方式为在功能区里打开【开发工具】选项卡,可快速通过【Excel加载项】定位到此加载项清单。
以下这些系统自带的加载项如规划求解、数据分析库等,貌似对其管理也有点小问题。真要处理他们时,要回到Excel的原生加载项界面处理。...一、遍历本机或当前用户下的所有COM加载项插件 此处的插件清单仅为COM加载项插件,一般性的普通加载项不在此清单范围内,而且普通加载项一般出问题不多,下文也会简单说明如何维护普通加载项的插件。...三、修复选中插件因家庭学生版加载失败 如标题所示,此功能主要针对新电脑安装自带的OFFICE,在安装插件后,始终加载不上来,可以使用此项去修复试试。...经过复制后,经反馈是有效的,一般VSTO技术开发的插件,都因为此项的修复得以改善,正常使用。...六、打开OFFICE加载项文件夹 前面提到,本工具仅对COM加载项的插件进行管理,普通加载项如Excel的以xlam结尾的文件(使用xll技术开发的插件,同样会落在此清单范围内,如Excel催化剂开发的自定义函数和
Office VSTO 将加载项加载到单独的 AppDomain 中[6]以进行隔离。 DotNetBrowser 在非默认 AppDomain 中运行。...事实上,可以在不同的 AppDomain 中创建多个 Chromium 引擎并同时使用它们。因此,DotNetBrowser 可用于创建 VSTO 加载项。...因此,桌面应用程序应具备DPI 感知功能[17],才能在高 DPI 显示器(DPI 比例设置大于 100% 的显示器)上正确运行。...它也不能用于暗示在单独的 AppDomain(如 VSTO)中运行代码的环境。对于其他一些情况,例如播放使用专有编解码器编码的内容,您必须自己构建、更新和维护 CEF。...General-Usage [5] CefSharp 不能在非默认 AppDomain 中使用: https://github.com/cefsharp/CefSharp/wiki/General-Usage [6] 将加载项加载到单独的
何为com COM是Component Object Model (组件对象模型)的缩写。 COM是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。...并且组件可以在运行时刻,在不被重新链接或编译应用程序的情况下被卸下或替换掉。Microsoft的许多技术,如ActiveX, DirectX以及OLE等都是基于COM而建立起来的。...用于存储当前用户配置项 HKEY_CURRENT_USER_LOCAL_SETTINGS 用于存储当前用户对计算机的配置项 HKEY_LOCAL_MACHINE 用于存储当前用户物理状态 HKEY_USERS...GUID CLSID; // 组件ID typedef GUID IID; // 接口ID com劫持 前面说了这么多的基础知识来到今天的正文,首先要了解com组件的加载过程,com组件会根据以下路径去寻找...键指向的路径来完成我们自己dll的加载0 第二种思路就是覆盖COM对象,在HKCU注册表中添加正确的键值后,当引用目标COM对象时,HKLM中的键值就会被覆盖(并且“添加”到HKCR中)。
进度栏 /id OSEntryLineNum 对于添加有操作系统加载项的 Boot.ini 文件,指定其 [operating systems] 区段中的操作系统项的行号,[operating systems...该 bootcfg query 输出的启动项部分显示了 Boot.ini 的 [operating systems] 区段中的这些操作系统项: 下述范例显示了如何使用 bootcfg /query 命令...,该过程会覆盖任何已有的操作系统项选项,所添加的文本应包含有效的 OS 加载项,比如 /debug、/fastdetect、/nodebug、/baudrate、/crashdebug 以及 /sos...#该值表示在 NTLDR 加载默认的操作系统之前可供用户从启动加载程序画面选择操作系统的秒数,如果该值为 0,则 NTLDR 将不显示启动加载程序画面而直接启动默认的操作系统。 ...GUID> (可选)将设置加载到此 GUID 所代表的电源方案中。
此乃旧文,题目改一下,有点系统性,JSA助攻第一波:可以通过Application.Run接口,让外部程序或VSTO/ExcelDNA项目可以调用JSA的宏代码。...以下是历史内容: 在WPS的个人版上,默认只有JSA宏,没有VBA宏,虽说在VSTO/ExcelDNA项目里或者外部程序如C#/python等可以使用COM通信来调用WPS的COM开放的接口。...如果使用外部程序或VSTO插件可以调用这些接口,是比较完美的。例如使用RPA工具,可以全自动化地对其进行单元格图片插入,最后形成报告结果。...在VSTO里可以调出webshape网页控件等,非常广阔的应用场景。 现如今,还真可以了。稍有点曲折,但总算是可以做到在windows环境下实现调用JSA宏的愿景。...总结 WPS在二次开发上的支持,真的出了名的糟糕,WPSJS加载项、JSA宏,一开始觉得开了个不错的头,但几年下来,毫无进展。
Office加载项是使用Web技术构建的,与 Excel 进行交互,这要还是靠 Javascript 语言。...最后是在 OfficeHelpers 空间中找到了,这点是跟 VBA/VSTO 不一样的地方,但是一通百通,明白了就 OK 了,下回专门为这个空间作个介绍吧,代码如下: OfficeHelpers....forceCreateSheet(context.workbook, "9X9"); 【打印乘法表】 上一课也讲了如何为单元格赋值,有了上课的基础,这里的代码就不是问题了。...context.sync 在 OfficeJS 的 API 示例代码中,总能看到这样一句代码: await context.sync(); 从官网上查询一番,得到的意思大概是这样的,之前的代码只是添加到内部的执行队列中...今天的代码,主要是解决一个编程习惯的问题,去找一些现成的 VBA 代码去改造成 Web Add-ins 插件,或是个不错的主意。
以下是历史内容: 昨天匆忙间发布了使用外部程序/VSTO插件执行JSA宏的推文,其实还有一些后续的更劲爆的效果,在某些场景上可以有很好的发挥。...『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好的方式是保存到xlam文件里,用户更无感它的存在。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动时自动加载。...使用xlam文件,将它变成普通加载项,不会出现一个新的工作薄的打开。使用体验更友好。 接着,如果用户想获得某个JSA宏嵌入到它的当下的工作薄里,这个又该如何处理。...如果从零开始改造xlsx文件,让其转变为一个WPS表格可识别并可加载JSA宏成功的方案,至少要改动以下三个地方。
Office VSTO 将加载项加载到单独的 AppDomain 中以进行隔离。DotNetBrowser 在非默认 AppDomain 中运行。...事实上,可以在不同的 AppDomain 中创建多个 Chromium 引擎并同时使用它们。因此,DotNetBrowser 可用于创建 VSTO 加载项。...因此,桌面应用程序应具备 DPI 感知功能,才能在高 DPI 显示器(DPI 比例设置大于 100% 的显示器)上正确运行。...即使您的代码使用async/await模式,也无需创建和使用同步上下文。 API和功能 这两种产品都有许多可用的功能。在本文中,我将比较几个最重要的,以展示 API 的不同之处。...它也不能用于暗示在单独的 AppDomain(如 VSTO)中运行代码的环境。对于其他一些情况,例如播放使用专有编解码器编码的内容,您必须自己构建、更新和维护 CEF。
2、visual studio社区版不能开发VSTO,之前可能信息了解有延误,现在的visual studio社区版已经可以开发VSTO,没有版权的纠纷和负担,大家赶紧进来VSTO世界吧。...最终只需要给用户一个文件(已经把多个文件打包好),用户最简单的双击就可以立马使用,录个小视频告诉用户或以在加载项里把文件加载进去,不需每次双击打开,用户可以回到熟悉的工作表函数里输入一个简单的函数,只需理解什么叫参数...因为这个自定义函数写了好一阵子,加上我只是个三流程序猿的水平,具体的代码实现的细节,可能是比较糟糕的,大家在百度上随便搜搜的代码出来都比我的代码来的漂亮(其实我也百度抄了很多代码在里面)。 ?...自定义函数里我大概写了些描述,大家有兴趣的话,可以下载我的xll文件到自己机器里测试下。...能够愿意做这一系列的分享的东西对某些人来说可能真不是太突出,但我能说的是它就是我的全部家当,不是说我写出来的自定义函数功能有多好,代码有多优秀,值得大家为我转发个朋友圈。
在WPS的个人版上,默认只有JSA宏,没有VBA宏,虽说在VSTO/ExcelDNA项目里或者外部程序如C#/python等可以使用COM通信来调用WPS的COM开放的接口。...如果使用外部程序或VSTO插件可以调用这些接口,是比较完美的。例如使用RPA工具,可以全自动化地对其进行单元格图片插入,最后形成报告结果。...在VSTO里可以调出webshape网页控件等,非常广阔的应用场景。 现如今,还真可以了。稍有点曲折,但总算是可以做到在windows环境下实现调用JSA宏的愿景。...如何调用,答案和FreeScript类似,仍然使用了Application.Run方法,在外部程序或VSTO插件里,调用这个方法,同样可以运行JSA宏。...总结 WPS在二次开发上的支持,真的出了名的糟糕,WPSJS加载项、JSA宏,一开始觉得开了个不错的头,但几年下来,毫无进展。
昨天匆忙间发布了使用外部程序/VSTO插件执行JSA宏的推文,其实还有一些后续的更劲爆的效果,在某些场景上可以有很好的发挥。...『WPS二次开发最新成果』使用外部程序/VSTO插件执行JSA宏 外部程序/VSTO插件执行JSA宏,可以将JSA宏保存到xlsm文件里,但更好的方式是保存到xlam文件里,用户更无感它的存在。...可以在外部程序/VSTO插件里直接使用Application.Addins.Add,将xlam文件加载进来。当然也可以直接修改注册表,让WPS表格每次启动时自动加载。...使用xlam文件,将它变成普通加载项,不会出现一个新的工作薄的打开。使用体验更友好。 接着,如果用户想获得某个JSA宏嵌入到它的当下的工作薄里,这个又该如何处理。...如果从零开始改造xlsx文件,让其转变为一个WPS表格可识别并可加载JSA宏成功的方案,至少要改动以下三个地方。
进度栏 /id OSEntryLineNum 对于添加有操作系统加载项的 Boot.ini 文件,指定其 [operating systems] 区段中的操作系统项的行号,[operating systems...(1)\WINDOWS  启动项 ID、友好名、路径以及 OS 加载项 启动项目 ID: 1 好记的名称:"Microsoft Windows XP Professional" 路径:multi(...,该过程会覆盖任何已有的操作系统项选项,所添加的文本应包含有效的 OS 加载项,比如 /debug、/fastdetect、/nodebug、/baudrate、/crashdebug 以及 /sos...#该值表示在 NTLDR 加载默认的操作系统之前可供用户从启动加载程序画面选择操作系统的秒数,如果该值为 0,则 NTLDR 将不显示启动加载程序画面而直接启动默认的操作系统。 ...GUID> (可选)将设置加载到此 GUID 所代表的电源方案中。