[原创][C] 恶搞Windows 计算器——Windows Calculator Prank

好久不见!最近考试啦,不得空写文章。近几天,在一位编程大大的教导下(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 下测试的截图

untitled

按钮都成了自己设置的文字啦哈哈!

好啦!

【下载地址】

Calculator Prank DLL Download Link: Calculator Prank.dll

Winject Download Link: Winject.exe

Gnix 写的DLL injector: Dll Injector By Gnix.exe

来个视频呗!

« [网站][AutoIt3] 最深的网页——TheDeepestSite [原创][C&C++] Source Code 下载栏目开启! »
comments powered by Disqus