博主是一个SDK编程的初学者,始终坚持学技术要任务驱动的观念,在学习了有关Windows进程,内核对象,进程管理和控制的知识之后,就迫不及待地想要设计一个内存修改器练练手,然而在获取当前运行的各窗口的句柄这一步就卡住了,经过一番查阅和钻研,终于写出了如下的CUI小程序,解决了获取窗口及子窗口句柄,获取ClassName,获取WindowText的问题。
不知道这个小程序能不能替代SPY++的部分功能……
//CUI:相对于GUI(Graphical User Interface)图形用户界面而言的Command User Interface命令行用户界面。
PS:博主才疏学浅,程序中如有错误,欢迎各位指正!
该程序基于下列四个API实现
EnumWindows()
EnumWindows()
//BOOL EnumWindows(WNDENUMPROC,LPARAM)
//WNDENUMPROC 为回调函数的地址
//LPARAM为你自已定义的参数,将会传递给回调函数.
EnumChildWindows()
函数原型:
BOOL EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc, LPARAM lParam);
//HWND hWndParent 父窗口句柄
//WNDENUMPROC lpEnumFunc 回调函数的地址
//LPARAM lParam 自定义的参数
//注意:回调函数的返回值将会影响到这个API函数的行为。如果回调函数返回true,则枚举继续直到枚举完成;如果返回false,则将会中止枚举。
GetClassName()
GetClassName(hwnd,classname,256);
//GetClassName();hwnd是需要传入的句柄/classname是需要传入的LPTSTR缓冲区,用于接收类名/256是int,指定classname的大小,单位字节.
//获取成功将返回返回值为拷贝到指定缓冲区的字符个数,如果函数失败,返回值为0.
GetWindowText()
//与GetClassName参数完全一致