All Stories

Inno Setup挺好用的

  Inno Setup真的挺容易用的,小巧轻便,又免费。本来还专门整了个安装输入法的程序,把ime文件复制到系统目录下,再写一下注册表,调用一个API,最后把所有文件用WinRAR打包成自解压文件。其实这样的方案也不是不行,只是觉得自解压的界面丑了点,看起来更业余了点。于是抽空用Inno Setup整了个,ISTool才是其中的大功臣,把本来全部要用代码完成的功能分解到各个GUI窗口中进行设置。它可以完成复制文件,操作注册表,调用简单API等功能,实在太方便了。现在我这个安装程序还可以自动寻找上一次的安装路径,可以根据用户选择写入不同的内容到注册表中,用户体验应该说还是不错的,哈哈。  生成的安装程序在系统菜单上显示的“关于”选项,会弹出一个版权信息消息框,如果要改这个消息,应该改setup.e32文件中对应的信息。我开始用UltraEdit来改,但改了总是出错,于是把源代码弄来自己编译一个setup.e32,不过有一个问题是,我自己编译的体积要大好多,不知道哪里的问题,而且界面显示上有一点点问题。另外,安装程序文件查看版本的时候,在“备注”一项里,也会有固定的标识,也是可以用改资源的方法处理的,如果有代码的话,先修改一个SetupLdrVersion.rc文件,再编译成res,最后编译一把SetupLdr.e32就行了。在编译Setup.e32时,会要求有RemObjects的Pascal Script控件,下一个装上就行了。最后还有一点是,它居然不能用Delphi7来编译,看代码中的注意说,用小于7的版本,或者9都可以,9应该是2005吧,反正我在2007下面是编译过了的。

开始LLYF Spy的重大升级

  看着LLYF Spy中臃肿不堪的代码,实在惨不忍睹啊!于是下决心把LLYF Spy彻底重构一遍,原来已经算是1.8版的了,现在刚好来一个大版本升级,作为2.0吧!看看以前的升级版本历史记录,还是有点值得回味的,呵呵。最开始的几个版本都还是在学校的时候写的,从1.0到1.6都是,1.7是工作后买了电脑后做的第一次升级,并尝试用Inno Setup做了个安装程序,把几个其它小程序一起打包了。1.8是突然某一天在公司里想要一个抓任意形状区域的图像的功能,于是又改了一下,并且编译环境也从C++ Builder 6.0升级到BDS 2006。现在2.0的计划,不但要给它外形整容,还要给它内部调理,另外再把其它的几个小程序也清理掉,能整合的整合。看看新出炉的版本历史:2.0+增加主菜单+增加协件支持+增加Lua、Python、Tcl脚本插件支持、增加COM插件支持+增加外部工具配置支持+Website探测增加对Firefox的支持+增加全功能性的设置界面+支持英语和简体中文两种界面+添加到Office插件中+添加到Windows Bands、IE Bands中-移除了几个原来在主界面上的功能,转到协件或插件或外部工具来支持x重写了主要核心代码,用户可能体会不到,但对LLYF Spy的发展来讲具有重大意义 1.8+增加多种抓图方式x插件信息对话框中的WebBrowser增加XP风格x更小的可执行文件体积,使用BDS2006编译连接 1.7 + add some new plugins.+ add external tool integrated.+ add color pick dialog.+ auto records the form status...

输入法的几大致命伤

  作为一款输入法软件,有几点将会是致命伤:1、在某些环境中不能正常显示候选窗口,比如Firefox、Opera等程序中;2、不支持GBK字库或UNICODE字集;3、不能用UNICODE选项编译,因为编译了后运行不正常;4、有时候看不到状态窗口,或者没有方便的进行设置的方法。  以上几点按受影响严重程度依次排列,目前我正被这些问题困扰着,都不知道怎么解决啊!

没能move成

  就在出门前的半分钟,一条短信把行程改变了。  小丫头说,做女人好辛苦啊。我说,做女人长好看点,就有好多人追。小丫头说,没人追。我说,76GG啊,还有莫名其妙打电话来的啊。  做女人真的很辛苦啊,幸好我不是……

下雨了,move

  雨绵绵,let's move!  在网上找到一个叫Firebug的Firefox扩展,Mozilla的插件扩展机制也真tmd牛x啊!

用VCL很痛苦的一件事

  用cnsw.org论坛上某位据说是mm的话说,VCL打从娘胎里就不支持UNICODE。这让我觉得很痛苦,自从在VC2005下用API写了几天代码后,就不知不觉习惯了想用_UNICODE选项来进行编译了。唉,可惜的是,我现在是严重依赖VCL画界面了,不用它我还真的不知道怎么实现一些界面效果,比如我经常用到的PageControl。  Boost sandbox已经从sf.net的CVS迁移到SVN上去了,待Boost 1.34.0正式release后,Boost的主库也会从sf.net的CVS迁出。Boost是个好东西啊,不过跟VCL一起用的话……

协件和插件

  昨天偶然想到,IceSword使用的协件机制是一种处理主程序与其它相关性不大的功能之间关系的不错的方法。虽然想到了这点,但并没有马上去看它是怎么实现的,于是自己躺在床上一边嗑瓜子一边想,想了一会儿大概有了个轮廓。今天起来看了下IceSword,发现基本上我想的也差不多就这样了。它有一个C的头文件,提供接口声明,一个DLL提供进程间通信。而我当时想到的是需要一个LIB,可以静态链接进协件。如果有很多接口需要暴露的话,用DLL会好一点,这样相比LIB,能减小每个协件的文件大小。另外唯一剩下需要考虑的是,采用怎样一个良好的进程间通信机制,要快速稳定,同时又不能太消耗系统资源。  插件以前我只用过DLL形式的,其实似乎COM是很不错的一种选择,只不过我一直对COM没研究,看过一些文章,也还是没搞明白怎么用COM实现插件机制。了解过Eclipse和Emacs等弹性非常好的架构后,隐约觉得用脚本来实现插件也是一种极好的方法。重新修葺一遍代码,整理好功能接口,就可以为多种脚本提供支持了。不过还有一点需要注意的是,用脚本实现的插件,对界面的操作大概都需要主程序来支持了,比如显示一条消息,选择一个文件等。另外还有一点需要提到的是,如果主程序需要暴露很多接口给脚本插件,或者同时需要能支持多种脚本语言的话,使用SWIG是个不错的选择。

五一了,哦耶

  七天长假哦,哈哈,不过也没怎么觉得兴奋,只是想着可以懒洋洋发躺在床上发呆了就感觉安逸。再想想还有一天一千的两天旅行,呵呵,对我来说很奢侈啊!  最近写blog的频率似乎降下来了,因为回到家都不怎么想动了,就看几集动画片,被小丫头知道后还要被嘲笑就这么点追求。工作忙也可以算是这么一个借口啊,怪不得我发邮件问一个人为什么不继续更新他的blog时,他会说最近很忙这样的理由出来啊。现在自己也算是稍微体会了一把。  好穷啊好穷啊好穷啊,只能怪自己太颓废堕落了,呜呜。

居然觉得有点累

  真是难得啊,久违的感觉了。回到家,打开电脑,上几个常去的网站看了看,没什么新鲜的,收了下邮件,也没什么新鲜的,看了几分钟书,不行了,只好趴到床上去。  从公司的图书馆借了本《深入解析ATL》和《Programming Ruby》中文版,其实照以往的经验,这样的大砖头我一般到期了我都不会看几页,只是觉得或者有必要放在身边,以备不时之需。一直在整GT3K那玩意儿,还是有点麻烦啊,要在TreeView中显示,同时要在具有可读性的显示名字以及具有唯一标识性的URI之间来回转换,没有一个好的设计看来是不行了,代码越写越多了。ATL是个好东西啊,里面提供了一些好用的工具类(比如注册表读写类)、宏(比如宽窄字符转换宏)等,只要包含特定的头文件就可以了。今天基本上完成了早上给自己定的任务,争取明天也能完成自己预定的任务,这样五一就可以玩得更舒坦更轻松。他们不用Boost,实在是一大遗憾啊,有些工作不得已只好自己操刀了。