过程中遇到好多困难,比如怎样枚举子窗口、设置文本等等,最后还是一一解决了
学到了个新的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
来个视频呗!
Dosent works
回复删除This just works under 32bit machine!
删除yea,im 32 bit machine btw that DLL Injector by Gnix dosent works but Winject works
删除Oh my god I'm using Windows 7 Home Premium 64bit...
删除Forgot to say something :(
删除Gnix said that the DLL injector had some BUG
err.. I will release the source code soon :) (also the DLL's source code! You all can alter the source code freely and compile it yourself!)
ps: I'm still a newbie in C and I really don't know how to compile 64bit DLL, sorry:(
http://garyngzhongbo.blogspot.com/2012/07/source-code-dl.html
删除:) 拍短片,很用心!有機會可以請教下你關於DLL開發嗎?
回复删除当然可以!有编程底子的人都能写DLL!要怎么样联络大大你呢?
删除對不起!現在才發現這個留言!我FB Msg你!
删除