返回首页
当前位置: 主页 > 办公软件 > OneNote教程 >

【OneNote】一次打开/关闭多个笔记本

时间:2014-10-02 00:40来源:电脑教程学习网 www.etwiki.cn 编辑:admin

本来非常喜欢OneNote,但是有一点实在让我无法忍受, 那就是无法一次打开(或者说添加?) 多个笔记本: 这是指, 当我有多个笔记本时, 我重装了操作系统, 这时我需要把原来的笔记本重新添加回来, 但是我只能一次打开一个, 而且操作相当繁琐, 因为某种原因, 有一阵子我常常重装系统, 所以这个问题渐渐地让我抓狂, 我甚至因为这个原因弃用了一阵子OneNote, 转而用为知知识管理, 但是又用了一阵子, 发现为知更让我抓狂, 遂决定不惜一切代价解决OneNote不能一次打开多个笔记本的问题.

 

首先我希望通过 类似宏的手法来解决, 但是发现OneNote不支持宏, 那就只能用它的API来实现了, 马上搜索它的编程接口, 还好, 它的文档虽然不多, 也还是有一些的[注1], 经过一番测试, 完成了与OneNote的交互测试, 正准备测试打开笔记本的函数时, 我突然想到也许直接用批处理即可解决, 不需要这么麻烦.

 

说干就干, 马上把几个”打开笔记本.onetoc2”列进一个cmd文件中, 执行, ----OK! 自己开始哑然失笑, 原来可以如此简单就解决的问题, 竟然让我郁闷了如许长的时间, 并且还费力气研究了它的编程接口… 不过, 看它的API 并非一无所获, 至少, 通过编程接口可以实现关闭所有笔记本的功能, 而这个功能肯定不可能通过批处理来实现(虽然我目前没想到这有什么意义……).

 

下面是打开和关闭的代码及实现方法:

(1) 通过批处理打开全部笔记本

直接将所有的onetoc2文件, 每个一行, 写入批处理文件即可. 例如, 我的批处理文件为:

D:\myDocuments\OneNote\知识笔记\打开笔记本.onetoc2
D:\myDocuments\OneNote\工作备忘\打开笔记本.onetoc2

……

(2) 通过COM接口关闭所有笔记本

在vs2010中的实现可能和vs2008有所不同, 我是在vs2010中测试的, vs2008并未测试.

在 vs中新建一个windows forms application, 添加COM引用Microsoft oneNote 14.0 object library, 然后选中Solution Explorer的Reference下的Microsoft.Office.Interop.OneNote, 查看它的属性, 在Property Explorer中将Embed Interop Types改为False(重要, 此项必须修改, 因OneNote2010与VS2010的NOPIA属性不兼容 )[注2], 然后即可开始编程, 代码如下:

private void Form1_Load(object sender, EventArgs e){ var onenoteApp = new Microsoft.Office.Interop.OneNote.Application(); string notebookXml; onenoteApp.GetHierarchy(null, HierarchyScope.hsNotebooks, out notebookXml); var doc = System.Xml.Linq.XDocument.Parse(notebookXml); var ns = doc.Root.Name.Namespace; foreach (var notebookNode in from node in doc.Descendants(ns + "Notebook") select node) { onenoteApp.CloseNotebook(notebookNode.Attribute("ID").Value); }}

------分隔线----------------------------
标签(Tag):onenote教程 onenote视频教程 onenote技巧 onenote下载 onenote
------分隔线----------------------------
推荐内容
猜你感兴趣