-
将IE收藏夹里面的文章导入到CyberArticle
发表于 2009年05月30日 5 条评论附件是一段js脚本,解压缩执行后,可以将IE收藏夹内容导入到CyberArticle里面。
注意:本脚本只能在CyberArticle 5.3或者更高的版本中使用。
下面是这段代码说明。
//导入一个目录下面的所有链接,采用递归
//bookguid: 目标书籍GUID
//folderpath: 导入后文章的路径
//objCABookBuilder: CyberArticle.CABookBuilderAutomationApp对象
//objShell: WSript.Shell对象
//objFileSystem: Scripting.FileSystemObject对象
//path: 需要导入的路径
//
function ImportPath(bookguid, folderpath, objCABookBuilder, objShell, objFileSystem, path)
{
//获得路径对象
var objFolder = objFileSystem.GetFolder(path);
//枚举文件
var objSubfilesEnum = new Enumerator(objFolder.Files);
for (; !objSubfilesEnum.atEnd(); objSubfilesEnum.moveNext())
{
//获得文件
var filename = objSubfilesEnum.item();
var objFile = objFileSystem.GetFile(filename);
//
var strFileTitle = objFile.Name;
var pos = strFileTitle.indexOf(“.url”);
if (-1 != pos)
{
//如果是.url文件
strFileTitle = strFileTitle.substring(0, pos);
//objShell.Popup(“file name is: ” + filename);
//
try
{
var objShortcut = objShell.CreateShortcut(filename);
//
//objShell.Popup(objShortcut.TargetPath);
var url = objShortcut.TargetPath;
//
//添加一个url进行下载
objCABookBuilder.AddJob(bookguid, folderpath, url, strFileTitle, “Default”, 0, true, true, 0);
}
catch (e)
{
}
}
}
//枚举子文件夹
var objSubfoldersEnum = new Enumerator(objFolder.SubFolders);
for (; !objSubfoldersEnum.atEnd(); objSubfoldersEnum.moveNext())
{
var subfolder = objSubfoldersEnum.item();
//
var objSubFolder = objFileSystem.GetFolder(subfolder);
var subfoldername = objSubFolder.Name;
//导入子文件夹
ImportPath(bookguid, folderpath + “\\” + subfoldername, objCABookBuilder, objShell, objFileSystem, subfolder);
}
}
//CyberArticle.CAAutomationApp对象
var objCA = new ActiveXObject(“CyberArticle.CAAutomationApp”);
//获得选中的节点
var objSelectedNodes = objCA.SelectedNodes;
if (objSelectedNodes != null && objSelectedNodes.Count > 0)
{
var objShell = new ActiveXObject(“WScript.Shell”);
//
//获得第一个选中的节点
var objSelectedNode = objSelectedNodes.Item(0);
if (objSelectedNode.Type != 0)
objSelectedNode = objSelectedNode.ParentNode;
//
//获得书籍信息和相应的目录路径
var strBookGUID = objSelectedNode.Book.GUID;
var folderpath = objSelectedNode.GetTitlePath(true, false);
//objShell.Popup(“title path: ” + folderpath);
//创建BookBuilder对象,用来下载链接
var objCABookBuilder = new ActiveXObject(“CyberArticle.CABookBuilderAutomationApp”);
//获得收藏夹路径
var strPath = objShell.SpecialFolders(“Favorites”);
strPath = objShell.ExpandEnvironmentStrings(strPath);
//objShell.Popup(strPath);
//获得文件夹对象
var objFileSystem = new ActiveXObject(“Scripting.FileSystemObject”);
//导入文件夹
ImportPath(strBookGUID, folderpath, objCABookBuilder, objShell, objFileSystem, strPath);
//开始下载
objCABookBuilder.StartDownload();
}从这一段简单的代码可以看出,CyberArticle的扩展性是非常强大和易用的。只要您稍微具有一定的脚本编程能力,就可以很容易的对CyberArticle进行扩展。
下个CyberArticle版本,将会包含这段脚本,并制作成一个CyberArticle宏,添加到CyberArticle程序里面,方便使用。
-
CyberArticle和Live Writer的比较
发表于 2009年05月29日 1 条评论CyberArticle并不是一个专用的Blog离线发布软件,但是因为包含了WordPress发布插件,使得CyberArticle可以方便的用于发布WordPress文章。
Live Writer是一个专用的Blog离线发布软件,支持主流的Blog系统。
严格来说,这两个软件并不是一类软件。但是针对WordPress系统,使二者有了一定程度的可比性。下面作一个比较简单的比较。(仅仅针对WordPress)。
文章编辑功能
离线发布,最重要的就是文章编辑。下面是编辑文章的界面:
CyberArticle
Live Writer
下面是一个比较
功能CyberArticleLive Writer编辑撤销,重做,剪切,复职,粘贴有有选择性粘贴纯文本,HTML,图片,RTF纯文本,HTML查找,替换查找,替换查找插入常规图像,表格,日期,时间,水平线,批量插入图片,书签(页内链接),链接,返回到顶部链接,索引,HTML组件。链接,图片,表格,相册。特色功能插入HTML组件:可以插入大量预定以好的HTML代码,例如各种各样的表格,文字等等。批量插入图片:可以批量插入本地图片。
书签:可以插入业内链接,实现页内跳转。插入相册,可以从网络相册插入图片。格式常规样式,字体名称,字体大小,字体样式,字体颜色,段落格式样式,字体名称,字体大小,字体样式,字体颜色,段落格式特色功能字体大小,支持多种字体大小:8,9,10,11,12,14,16,18,20,24,36,72仅支持8,10,12,14,18,24,36。不支持中文常用的9号字表格功能常规插入表格,插入行,列,删除行,列插入表格,插入行,列,删除行,列特色功能合并单元格, 差分单元格,设置单元格行/列跨距。移动航/列其它功能宏功能,DOM橡皮擦,标记文字,模板功能,HTML标记导航,荧光笔,源代码着色功能拼写检查,字数统计从上面的表格中可以看到,CyberArticle的编辑功能要更多一些。但是在测试过程中,发现Live Writer粘贴HTML格式的时候,无法显示HTML里面包含的本地图片。这是一个比较大的问题。
Blog发布功能
二者都可以直接发布文章。
CyberArticle在发布文章的时候,会出现对话框,要求输入服务器信息(如果已经发布过,则保存相关信息),文章类型(页面还是Blog),分类。
Live Writer在新建文章的时候,就需要确定是页面还是Blog。编辑文章的时候,则要求直接选择分类。点击发布按钮后,直接发布。
二者没有什么本质区别,Live Writer还支持设置Tag。但是测试中,无法正常使用,也无法显示Tag。CyberArticle的Blog无法直接支持Tag。
文章管理功能
CyberArticle是知识管理软件,所有的文章,都保存在本地。即文章发布后,本地和Blog系统,各自都有自己的文章。如果以后需要重新编辑文章,直接在本地编辑后,重新发布上去,就可以将在线的文章更新成新的文章。也可以强制选择,发布成新的文章。
Live Writer的文章发布之前,会当成草稿保存在本地。发布后,从草稿中删除。如果以后需要重新编辑,则需要从在线的文章读取。因此Live Writer文章在本地,并没有备份。
CyberArticle还拥有更多的管理功能,例如批量替换,批量文章处理,制作电子书等等功能。
结论
如果您的文章,大部分都是原创内容,那么用Live Writer或者CyberArticle,区别并不是很大。但是因为CyberArticle会把文章保存在本地,因此对于您的数据安全性,会有更好的保证。即使以后您从一个Blog转移到另外一个Blog,或者您的Blog服务商突然停止服务,您的文章也都保存在本地,完全不用担心这个问题。
如果您的文章大部分都是从网络上复制而来的,那么用CyberArticle,无疑会让您更加得心应手。因为CyberArticle本身就是一个知识管理软件,致力于网络知识的获得和管理。而在这方面,可以说是独一无二的。
总之,如果您使用了WordPress作为您的Blog系统,那么用CyberArticle作为离线发布工具,可以说是最好的选择。
-
Visual C++的STL和CComPtr的一个问题
发表于 2009年05月28日 没有评论今天在编写IFilter插件的时候,发现一个STL和CComPtr问题(Visual C++ / Visual Studio 2008):
我定义了一个数组:
std::vector<CComPtr<ICANode> > arrayNodes;当我对这个数组排序的时候:
std::sort(arrayNodes.begin(), arrayNodes.end(), CompareNodeByID);出现了一个断言失败,位于atlcomcli.h第149行,如下:
//The assert on operator& usually indicates a bug. If this is really
//what is needed, however, take the address of the p member explicitly.
T** operator&() throw()
{
ATLASSERT(p==NULL);
return &p;
}在这个函数之前,这里有一个说明,ATL的作者认为通常来说,对于一个CComPtr对象获得地址,一般是用来给这个对象赋予一个新的值,就像QueryInterface那样。所以,在这个时候,p本身的值,应该是空。
然后经过跟踪,发现是std::sort这里在调用&操作符(<utility>文件):
template<class _Ty> inline
void swap(_Ty& _Left, _Ty& _Right)
{ // exchange values stored at _Left and _Right
if (&_Left != &_Right)
{ // different, worth swapping
_Ty _Tmp = _Left;
_Left = _Right;
_Right = _Tmp;
}
}排序的时候要交换元素得值,这里先比较两个元素的地址,是否相同。如果相同,认为是同一个元素,就不交换了。在这里调用&操作符,用于比较元素的地址。这里的元素,就是CComPtr对象。而在这里,对象本身的值,当然不为空,结果就出现了断言失败。
目前没有找到好的解决办法。好在Release版本,不会出现问题。
-
CyberArticle Google桌面搜索的插件 (安装版本)
发表于 2009年05月28日 2 条评论安装该插件后,Google桌面搜索(Google Desktop Search) 就可以搜索到 CyberArticle书籍文件。
使用
直接下载附件安装即可。Google桌面搜索服务会自动对CyberArticle 书籍(xbook文件)进行索引。索引建立后,就可以进行全文检索了。
注意
- 不在书籍列表里面的书籍,不会建立索引。
- 远程书籍,不会建立索引。
- 被加密的文章,不会建立索引
- 在安装该插件前,请首先安装Google桌面搜索软件。
Attachments
-
CyberArticle IFilter插件,用于Windows Search (安装版本)
发表于 2009年05月28日 1 条评论CyberArticle IFilter插件,可以用于Windows Search服务(Vista或者更高系统),Windows索引服务,MSN桌面搜索,IIS,SharePoint Portal Server, Windows SharePoint Services, Site Server,Exchange Server,SQL Server及其它基于微软搜索技术之上的产品。
使用
直接下载附件安装即可。上述服务会自动对CyberArticle 书籍(xbook文件)进行索引。索引建立后,就可以进行全文检索了。
注意
- 不在书籍列表里面的书籍,不会建立索引。
- 远程书籍,不会建立索引。
- 被加密的文章,不会建立索引
Attachments
-
CyberArticle 5.3 测试版本 2009-5-26更新
发表于 2009年05月26日 没有评论1:增加了版本控制功能。可以保留文章的修改记录,允许恢复任意历史记录。
使用:首先,在书籍属性里面,启用版本控制功能。

每天只保留一个副本,可以减少保留的记录。否则,对于频繁编辑某些文章的话,可能会有很多的历史记录被保存,造成大量的数据冗余。如果您使用了编辑文章的时候,自动保存功能,则最好选中这个选项,以避免生成太多的历史数据。
以后再编辑文章的时候,程序会自动保留以前的数据。
您可以在文章属性里面,找到历史记录:

可以选择查看任意一个历史记录,也可以选择任意一个历史记录,恢复成当前的状态。
目前版本控制功能还比较简单,但是对于需要保留修改痕迹的朋友来说,还是很方便的。而且这个功能,对于多人使用MySQL/SQLServer书籍的朋友,会更有用一些,可以保留每一个人的修改记录。
2:添加快捷方式类型的附件的时候,可以选择是否将目录替换成环境变量。

这样当您重新安装系统,或者更换电脑,快捷方式仍然会生效。
同时,还增加了两个特殊的环境变量:
%BookFolder%:当前书籍所在的文件夹。
%MyBooksFolder%:默认的书籍保存文件夹。通常是我的文档\My Books。
这样,您可以将一些附件,例如mp3/视频等等文件,放在书籍文件夹或者子文件夹里面。即使书籍更改了目录,或者更换电脑,都可以保持正确的链接。
3:书签功能的改进。
从这个版本开始,您可以放心使用书签功能,而不用担心因为系统重新安装,或者更换电脑等原因,导致书签实效。只要您的书籍在书籍列表内,就可以正确找到相应的文章。这样,您可以利用书签功能,作为一个混合的分类功能:不同的书籍,可以在一起分类;同一篇文章,可以在不同的分类下面。
下载CyberArticle 5.3测试版本
-
卡巴斯基2009引起CyberArticle频繁出错的解决办法
发表于 2009年05月26日 没有评论今天从一个用户那里发现一个问题,现象是CyberArticle保存网页的时候,经常会出现ExecCommand.exe出错,或者经常出现操作必须使用一个可更新的查询这样的对话框,如下图:
ExecCommand.exe出错:

无法保存网页

重新启动系统后,上面的问题可以缓解,但是过一段时间后,还是会出现。
操作系统:Vista
杀毒软件:卡巴斯基2009
经过摸索,发现是杀毒软件引起的。解决办法如下:
1:打开卡巴斯基:
点击右上角的设置按钮:
选择威胁和排除,切换到信任程序:
点击添加按钮,将CyberArticle安装目录下面的CyberArticle.exe, ExecCommand.exe这两个程序,添加到信任程序里面。
依次点击确定按钮,保存设置。
然后重新启动系统,问题获得解决。
原因猜想:因为CyberArticle书籍文件都很大,通常都在几百M甚至更大,在保存网页的时候,杀毒软件会自动扫描书籍文件,但是这个过程可能会很长,导致CyberArticle出错。
因此将CyberArticle程序添加到信任程序里面,避免杀毒软件检查xbook文件,也就避免了这个问题。
如果您遇到了类似的问题,也可以这样处理一下。对于其他杀毒软件,操作方法类似。
-
共享一个小程序,用来翻译部分程序的界面语言
发表于 2009年05月23日 没有评论帮朋友写的一个小程序,可以用来翻译一些程序的界面,例如CyberArticle,Inno Setup的语言。
使用这个程序翻译,要满足以下的条件:
1、界面语言是文本文件,例如CyberArticle的translations下面的ini文件,Inno Setup的ISL文件。
2、界面的定义和值通过等号或者空格/TAB来分割,例如CyberArticle的语言,通过等号分割。
程序界面:
选择分割符,然后分别打开两个文件,选择一行,直接翻译就可以了。
翻译后,选择保存。
注意:
所有打开,保存的文件,都必须是unicode格式。如果不是,请首先转换。
-
Windows 7 一些不方便的地方
发表于 2009年05月23日 4 条评论1:超级任务栏和IE:
任务栏里面的IE。如果只开了一个IE,但是有多个Tab。这个时候图标仍然显示是多个窗口。用鼠标点击图标,不会直接显示IE窗口,而是预览每一个Tab,要求选择一个Tab。实际上是多此一举,因为无论我选择哪一个Tab,它都会把整个IE显示在前面。唯一的好处,就是可以预览每一个Tab内容。
2:资源管理器:
能够设置Favorites和Library非常方便。但是这两个和目录树使用同一个Tree,结果如果Tree比较长,Favorites和Library就会因为滚动的原因,给隐藏了。最好就是能够一直显示这两个列表。
还有就是左边Tree和右边列表是否同步显示。
- 默认不同步,则如果想从左边Tree找一个同级临近的目录,就会比较麻烦(我不习惯从地址栏选择,因为信息更少)。
- 如果同步,对于比较深的目录,会导致Favorites和Library被隐藏(滚动)。而且如果我从Favorites里面选择了一个目录,它也会自动展开整个目录,从而导致Favorites和Library再次被隐藏。
因此,解决的办法,就是让Favorites和Library固定显示,不要放在目录Tree里面。
-
用于Google 桌面搜索的CyberArticle插件
发表于 2009年05月23日 1 条评论安装该插件后,Google桌面搜索(Google Desktop Search) 就可以搜索到 CyberArticle书籍文件。
安装步骤:
1:下载附件。
2:解压缩附件到任意目录,例如D:\CyberArticle
3:运行命令行程序:开始菜单 -> 运行 -> cmd
4:在命令行窗口输入 regsvr32 “D:\CyberArticle\CyberArticleGDSPlugin.dll”
5:注册过程,会有两个Google警告窗口,都要选择“确定”。
6:正常情况下,会出现注册成功对话框。
使用:等到Google桌面搜索对CyberArticle书籍建立索引后,您就可以对CyberArticle书籍进行搜索了。点击搜索结果,会自动调用CyberArticle进行浏览。
注意
- 不在书籍列表里面的书籍,不会建立索引。
- 远程书籍,不会建立索引。
- 被加密的文章,不会建立索引








最近评论