新增了4个Low Level Hook:Mouse_LL,Keyboard_LL, JournalRecord,JournalPlayback。由于是Low Level Hook,因此Hook是不依赖于dll,所以可以直接将HookProc在Java程序中编写。这四个钩子都是全局的,而且都很有用处。Mouse_LL,Keyboard_LL,自不必说,用来监听鼠标和键盘的。Journal的2个Hook则是所谓的日志钩子,WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个Hook回放通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的。WH_JOURNALPLAYBACK Hook是全局Hook,它不能象线程特定Hook一样使用。WH_JOURNALPLAYBACK Hook返回超时值,这个值告诉系统在处理来自回放Hook当前消息之前需要等待多长时间(毫秒)。这就使Hook可以控制实时事件的回放。
基本上现在用SWT-Extension来实现这四个Hook还是很容易的,做了一下简单的数据封装和事件封装,而且加入了结合体对象和JNI的handle互相转换的函数。用来做C++的一些事情还是比较得心应手的。最新版本的Example提供了一个简单的系统Record/Playback例子,可以记录和回放系统事件。
最新的build已经发布到 http://feeling.sourceforge.net 上了,有兴趣的可以下载看看,并且可以作为Eclipse插件使用,支持 eclipse 3.2 以上版本。
PS: Journal的2个Hook Vista已经停止支持了,所以这个例子在Vista 下是看不到的:-(