oshj 2004-09
建议使用1024×768模式、记事本最大化状态查看本Readme文件
程序仅在WIN2000 Pro中文版下测试过,其他环境没有测试
/*========================================================================
文件: exports.cpp
说明:全局消息钩子
时间:2004-09-15
编写:oshj || oshj@21cn.com
环境:VC6.0/Win2000 Pro/SP4/1024*768
特别说明:本程序目的是更改其他程序窗口的显示内容(如数值)。用枚举主窗口
和子窗口的方法只能找到有句柄的控件,发消息进行更改。对无句柄
的控件就无能为力了,在spy++里都无法枚举Delphi/BCB/VB的label控件的
只能采用截获TextOut的方法了,没想到其他更好的办法:-)这种就是
所谓的屏幕取词技术了,金山词霸用的就是这种方法。
=========================================================================*/
//-------------------------------------------------------------------------
//原理:
// 采用类似屏幕取词的方式,动态注入DLL到EXE进程。截获TextOut并判断当前要写
//到屏幕的内容是否是数字(Int或者Float等),如果是则×0.5(或其他预先设定的基数)
//然后再写到屏幕上。
// 所以一定要清楚的认识到:本程序只是临时欺骗,更改屏幕显示的数字而已,
//并不更改实际的数据,包括报表打印和数据导出(如导出到Excel等)均无能为力。
//唯一的办法就是屏蔽,使之无效。或者干脆彻底注销界面上的这些按钮。
//已知BUG或缺陷:
//1、时间控件类的时间也被HOOK更改了;
//2、由于HOOK的数据×0.50(或其他基数)之后可能有了少数点,长度增长,可能导致
// 新写到屏幕上的数据位置不准确;
//3、类似0010123的序号也被当作数字HOOK了,并×0.5,可以增加类似的判断;
// 但由于采用的全局消息钩子,如果判断太多会导致系统消耗太大,必须精简算法。
//4、类似 [1234],:235,...等凡是中文和数字、字母和数字、符号和数字混合的,
// 均会忽略掉,不进行计算。
//5、由于无法更改打印和数据导出等实际数据,所以将包含有“导出”、“Excel”、
// “打印”字样的有句柄的窗口(button、form等)全部注销!
//-------------------------------------------------------------------------
//; 警告:本程序仅为学习研究作品,不涉及任何商业利益。
//; 请慎重使用,由此产生的一切后果由使用者承担!
//; FNUM为计算的基数 (0 < FNUM < 1),保留两位小数点。
//; 如果配置文件损坏或删除,程序将采用缺省值:0.50
//-------------------------------------------------------------------------
//系统热键定义如下:
//呼叫程序窗口:Alt + A
//彻底隐藏运行:Alt + B
//开始数据钩子:Alt + C
//停止数据钩子:Alt + D
//悄悄退出程序:Alt + E
//-------------------------------------------------------------------------
评论6