一、项目说明
我使用电脑录制视频教程的时候,会展示PPT给观众,同时也有一些提示性的文字给我自己看。这就类似于很多电视节目录制现场的“提词器”。
节目录制现场的提词器在PC环境下,PowerPoint也具有提词器功能,在编辑PPT的时候,把每一页的备注中写上提示词即可。投影到屏幕上的给观众看的画面没有提示词,而演讲者的电脑屏幕的画面中有提示词。但是这要求使用投影仪或者使用双屏幕。而我的视频录制环境是我和观众是看的同一块屏幕,因此无法使用PowerPoint的提词功能。所以我只能自己开发一个应用。
既然我和观众是看的同一块屏幕,如果想达到“观众看不到提示词,而我能看到”的效果,就只能把提示词展示到额外的显示设备上。我们每个人都有智能手机,因此我就想到了把智能手机做为显示提示词的设备。基于这个想法,我开发出了一个桌面应用,这个应用提供了一个内嵌的Web服务器,提供了“获取当前PPT页面备注文字”以及“翻页”等功能的接口,并且提供了一个调用这些接口的网页;这样,只要在手机上访问这个网页,就可以通过手机来获取提示词,也可以通过手机来切换PPT的翻页。下图是我使用这个提词应用实际工作的场景:
我的提词器实际工作场景这个应用使用.NET5/.NETCore开发,但是思路是不局限于语言的,其他编程语言的开发者也可以使用你习惯的语言来开发。
我的应用主要使用了两个技术,一个是在WinForm程序中内嵌Web服务器,另一个就是通过代码控制PowerPoint文档。我下面将对它们分别做讲解。
二、.NET内嵌Web服务器技术
.NET中可以使用Kestrel实现内嵌Web服务器,而Kestrel就是ASP.NETCore项目默认的Web服务器。由于Kestrel只是一个NuGet包而已,因此可以把它装到任何.NET项目上,比如控制台、WinForm、WPF、Xamarin等。其实所谓的ASP.NETCore项目本质上也只是一个装了Kestrel等相关包的控制台程序而已。
这里演示在WinForm项目中的用法,其他类型项目操作步骤都差不多:
1、首先创建一个WinForm项目,然后在项目根目录下创建名字为