All Stories

学习COM

学习COM

我其实并不是为了学习COM 而才去学习COM 的,而是因为想给LLYF Spy 加上插件功能,插件已经可以支持一点了,但只限于普通DLL。听说现在用COM 实现插件的软件很多,所以我也想试试。图书馆找不到什么书看,一开始借了本潘爱民译的《深入解析ATL》,是讲如何用ATL写COM组件的,也不怎么看得懂,看到书中提到一本《Inside COM》的,但在图书馆外借室没找到。于是只好借来讲MFC的2本书上点点关于COM 开发的内容看看,还是不太容易,因为太多用MFC 实现COM 组件的细节了,还有《COM本质论》也是抽象,太高阶了点,不合适我。前天偶然发现2楼阅览室中有一本《COM 技术内幕》,应该就是所谓的《Inside COM 》了吧,于是马上站着翻看了一遍,讲得比较通俗易懂。今天中饭吃完,又去借了一下看看,真不错。于是又去1楼外借室借了本《COM精髓》,要学习一下COM了,只要够用就行,不用很精通。

开始使用VSS

开始使用VSS

昨天在装了个VSS,好像是VS6.0里带的那个,反正是从E383(这是我们学校校园网上一个很有人气的软件下载站点,由几个爱好者主持各种事务,机器放在信科某机房内)上down 来的,装了就开始用,把LLYF Spy,还有ProcessHelper、IconHelper、DebugCapture 以及毕业设计在做的那部分都Check in 了,试了一下,还不错,因为它只是保存修改的部分,这样就不用自己用WinRAR来压缩整个文件夹来备份了,而且可以看到任意一个状态的内容。 虽然以前也装过VSS,但都没有好好用上,因为自己写代码不到一定规模,觉得用VSS 嫌麻烦,而当有了一点数量的代码之后,用WinRAR 这样备份的方法弊端就太多了,VSS 的优势突显。

明天去见一下导师吧

明天去见一下导师吧

列个基本的计划,只是为了和导师打声招呼,可以开始做了吧。

无聊了,郁闷了,颓废了,堕落了

无聊了,郁闷了,颓废了,堕落了

到了学校,就明显感觉没有在家里那样的充实了,好像每次都这样,在学校一直都无所事事的样子,以前电脑在学校,家里没事做,就看书,基本上每次假期在家都要看好些东西。这次寒假在家有电脑玩,就总是看些奇怪的编程技巧之类的,然后自己写程序玩,最主要是写了个LLYF Spy,在写这个程序的过程中,尝试了一些以前都没用过的东西,比如远程线程、消息钩子等等,还是比较有意思的。

突然觉得这个世界好像不正常运作了

突然觉得这个世界好像不正常运作了

昨天中午回到了学校,稍微整理了一下,去剪了头发,然后去找学院的领导,想要申请提前去单位报到,可是院长是很不赞成,于是我只好说,等我先去和导师商量了再说。然后遇到了辅导员,他把我叫去说了一下关于毕业设计的事情,我顿时更加沮丧,我们班被分到电路实验中心,这是我最不擅长的,要是网络,软件之类的才是我最熟悉的部分,可偏偏是电路。从大二开始,电路分析,电子线路,高频都没有学好,就像多米诺骨牌一样的连锁反应。后来索性叫了chuanking 和king 他们一起去吃火锅,有点好笑,自己心里默默地为自己庆祝生日,他们都是不知道的,也许还真以为我是心血来潮。等吃完火锅回到寝室,寝室里只剩下一个室友了,另外一个搬走了,人少了,东西却不见怎么少,寝室里还是那么乱,呵呵。

LLYF Spy WIP

LLYF Spy WIP

稍微整理了一下代码,把几个只用到Win32 API 的全局函数移到一个DLL 中去了,本想这样可以减小点主执行文件的尺寸,其实也小不了多少KB。网上看到一篇文章,提到VC 程序员和BCB 程序员的代码风格问题,说一般经常看到VC程序员的代码风格要好一些,我也有些感触。用BCB 这么久,还是习惯于C语言的过程式编码风格,从来也设计一个类。

有些奢侈地用SYSTEM身份

有些奢侈地用SYSTEM身份

照着bingle的代码,改了一下自己用,用来搭配LLYF ProcessHelper,现在ph.exe 可以以SYSTEM 身份运行了,至少在Administrator 组用户下可以以SYSTEM 身份运行了,其实也就是能多看到其它两三个进程的命令行和模块列表,至于kavsvc.exe和kav.exe 还是不行的,也真是厉害,能保得这么严,当然IceSword 的进程也打不开。

关于shellapi.h/shlobj.h头文件和宏定义冲突

关于shellapi.h/shlobj.h头文件和宏定义冲突

昨天在给LLYF ProcessHelper添加TrayIcon功能,代码是从LLYF Spy 那部分完全Paste 过来的,结果编译的时候说NIF_INFO没有定义,还有szInfo、uTimeout这些凡是说要IE Version5.0 以上支持部分都说没有定义,可是我在LLYF Spy 里好好的呀,还以为是XP 的问题,马上退到2000 下,结果一样。于是我打开ShellApi.h看,在那个函数和结果定义前加上#define _WIN32_IE 0x0600,编译是勉强通过了,但是功能没有实现,并没有Balloon ToolTip 出现。后来在看Project Options,发现有个NO_WIN32_LEAN_AND_MEAN定义,是因为有一个函数里调用了SHBrowseForFolder,要加shlobj.h 这个头文件,于是意识到可能和这个有关。搜索了一下,我的程序里并没有调用到这个函数(我晕),于是把这个函数体全部注释掉,把这个头文件和宏也删了,编译和运行都正常了。

关于OutputDebugString 的模拟

关于OutputDebugString 的模拟

从这篇文章中可以知道,通过简单的几步设置,便可模拟OutputDebugString,可以用下面的代码描述: