开发插件毕竟和敲代码有关,但是你说你学过一个学期 C 语言,能不能上手微软的 VSTO 插件开发呢?答案是不能的,在开发插件之前,你最好了解这些基础的知识储备,建立起自己的学习体系,以方便快速上手插件的开发。
一、认识微软的代码模型,VBA 很重要
我们不盲目鼓吹 VBA,VBA 作为一门编程语言来说,设计的很糟糕,但是没有办法,如果你还没有装 VS,这是你唯一能用的工具。
但是好在,COM 模型是面向对象的,具体的说,它为你提供了非常合理的调用层级,比方说希望获得第一页第一个图形的名称,你可以使用以下代码来一层一层地找到它的数据:
Application.ActivePresentation.Slides(1).Shapes(1).Name
因为对象以树的结构一层一层地嵌套,你可以很方便的通过 VBA 的编辑环境,使用快捷提示快速查找其代码的位置。
您可以结合 MSDN 来探索 VBA 的世界:
二、学会插件和 VBA 开发并不能开创 PPT 的未来
请各位做好最坏的思想准备。你可能会好奇,我学了微软的那些开发技术之后难道没有用吗?当然不是,只不过,我需要告诉你一件很严肃的事情,微软提供的接口,是极其不完整的。
你应该知道口袋动画 PA 无法实现动画的真无限循环吧?你应该还留意到了 PA 它的动画复制有时并不可靠吧?为什么 PA 会这样?因为微软提供的接口根本不能改。
那……凭什么微软自己就行,我们就不行?是的,因为微软是第一方,接口的开放与隐藏,访问的权限,都由微软说了算,在微软划定的规则下,有些事情,你就是不能做。还比方说文本框的行距,图片媒体素材的管理与控制、个别动画的 To、By 属性、动画系统整体消息事件的缺失、集合序列的读写访问等等等等,会彻底打破你对 PPT 插件的美好印象。
在开发的过程中,你将会和那些前辈一样,一步一个脚印地、想方设法地给微软的这些残缺接口擦屁股,所以请不要想当然地认为自己就是 PPT 用户眼中的造物主和创世神,于是就高人一等。
三、我们仍然在期待新的插件的诞生
你可能会认为,当今的 PPT 插件生态已经过度饱和了,PA 将动画的功能吃的很透,OK 在设计上又那么具有效率和实用性,我这个初出茅庐的开发者到底能做什么呢?我能做的功能其它插件都有,这岂不是很尴尬?
确实如此,但是你也可以问问不仅作为开发者,同时也是作为插件使用者的自己,它们好用吗?
你可能在心中有一些想法,比方说,我特别喜欢 OK 的快捷截图,PA 的拆字功能,那我能不能从先做一个自己满意的插件开始呢?
你可以问问自己,我凭什么得在我可爱的 PowerPoint 上装那么多臃肿的插件,我能用到的功能甚至没有它们提供的百分之三,有这样呼声的人同你一样肯定存在。
于此同时,无论是 PA 也好,OK 也好,你会发现,能够让你舒心的插件真的很少,当今的插件生态缺少一个具有科学的 UI 设计的作品,扪心自问,你愿意接受这些全是按钮的插件吗?你能够理解这短短几行的提示吗?将心比心的说,这其实还是很难的吧,一个真正优秀的插件不需要教程,你还记得你是怎么喜欢上 PPT 的吗,教会你 PPT 的从来不是那些教程,而是潜在的 UI。我们在等待一个具有优秀 UI 的作品的出现,一个让大家一眼就能对上电波的作品出现。(ps,iSlide 这方面做得非常好)
四、不要碰触基础功能商业化的红线
无论是 OK 也好、PA 也好,它们的基础功能都是免费的,非素材相关的功能,在道德上都不应该收取费用,因为这些功能并非你的插件的独创与特色,你需要结合你的插件的竞争力和可能性出发,在这些方面思考商业化,而不要打这些小算盘。
比方说,我实现了一个比 PA 的动画风暴功能还要好用还要强大的底层动画编辑功能,而且动画还能生成本地数据文件通过社交网络分享。你可能会说,我既然实现了这么 NB 的功能,我收钱没什么问题吧?对不起,这些功能在众多 PPT 开发者眼里,开发难度不值一提,只是大家都没心思做罢了。所有和素材无关的功能,请不要厚着脸皮商业化,这不仅是对那些无私奉献的开发者前辈的一种亵渎,这更是对整个 PPT 环境的一种破坏。请大家不要只做一个微软 COM 模型的调用者,更不要学会了简单的调用就厚颜无耻地开出价格欺骗无知的路人。我们不喜欢这些无聊的把戏,有这功夫,不如多了解一些 OpenXml 的底层知识来的踏实。
五、学会断点调试会让你更快上手 PPT 开发
你可以通过断点调试插件 PPT 的模型属性,这会让你极为方便的了解 PPT 的模型对象。请不要认为断点调试是代码力废物的新手程序员才会做的事情,恰恰相反,一个合格的开发者恰恰就需要具备调试和在调试中学习的基本素质。学会调试可以让你的开发事半功倍,请不要忽视你的 IDE 的断点调试与 F10。
?
事实上,插件们的UI的确是个很大的槽点,PA和OK都做得不如islide好,但他们的功能几乎不与islide重叠,也没有UI好的平替,让人头疼