[原创][C] 恶搞Windows 计算器——Windows Calculator Prank
23 Jul 2012好久不见!最近考试啦,不得空写文章。近几天,在一位编程大大的教导下(Gnix),完成了我人生第一个DLL。
过程中遇到好多困难,比如怎样枚举子窗口、设置文本等等,最后还是一一解决了
学到了个新的API —— EnumChildWindows
函数原型(摘自MSDN):
BOOL WINAPI EnumChildWindows(
__in_opt HWND hWndParent,
__in WNDENUMPROC lpEnumFunc,
__in LPARAM lParam
);
EnumChildWindows 是个回调函数,什么来的?
就是个API,每当有事件发生时(这里是找到了一个子窗口),就会调用该函数,lpEnumFunc就是要指向函数地址。
而回调函数是长这么一个样的:
BOOL CALLBACK EnumChildProc(
__in HWND hwnd,
__in LPARAM lParam
);
hwnd就是控件的句柄啦!
在Code::Blocks 内写DLL时发现一个问题,但是还是被解决了——那就是DLL_PROCESS_ATTACH等事件竟然没被激活
Google了下,找到了解决办法,就是在前头加上 extern “C”
真是的,废话说太多了啊,跑题了。。
注意:此DLL在32bit的环境下编译,与64bit的机器不兼容!还有此DLL对Windows XP 下的计算器无效(怀疑Windows XP的Calculator 的按钮文本是画上去的。。)
还需要准备一个DLL injector,推荐的有Winject,但是我用了Gnix写的Dll Injector~
先发个在Windows 7 下测试的截图
按钮都成了自己设置的文字啦哈哈!
好啦!
【下载地址】
Calculator Prank DLL Download Link: Calculator Prank.dll
Winject Download Link: Winject.exe
Gnix 写的DLL injector: Dll Injector By Gnix.exe
来个视频呗!
Published by Gary Ng