窗口句柄的获得

窗口句柄的获得

ID:41986096

大小:44.00 KB

页数:4页

时间:2019-09-05

窗口句柄的获得_第1页
窗口句柄的获得_第2页
窗口句柄的获得_第3页
窗口句柄的获得_第4页
资源描述:

《窗口句柄的获得》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、首先我会罗列出一些获取句柄的Win32api函数,然后简单说说他们的用途!最后说说我是怎么理解和应用的。见笑了!可用的Win32api函数:1.HWNDFindWindow(LPCTSTRIpCIassName,LPCTSTRlpWindowName)HWNDFindWindowEx(HWNDhwndParent,HWNDhwndChildAfter,LPCTSTRlpClassName,LPCTSTRlpWindowName)2.HWNDWindowFromPoint(POINT&Point)3.BOOLCALLBACKEnumChildProc(HWNDhwnd,LP

2、ARAMIParam)BOOLCALLBACKEnumChildWindows(HWNDhWndParent,WNDENUMPROClpEnumFunc,LPARAMIParam)BOOLCALLBACKEnumWindows(WNDENUMPROCIpEnumFunc,LPARAMIParam)BOOLCALLBACKEnumWindowsProc(HWNDhwnd,LPARAMIParam)-般用途:对于第一种,大家都很熟悉,是捕捉句柄的常规武器,FindWindow这两兄弟,可以接受捕捉对象的类名或者窗口标题之一,作为参数,返回一个HWNDo可是对于一般群众,不一定

3、知道所有的窗口(包扌舌标题栏、按钮等等)的类名啊!棗可以简单举例,请问你知道桌面图标的窗口的类名吗?而对于窗口标题,有可能会出现相同的标题,冇两个窗口棗指一个程序的两个进程,这又是个麻烦吧!好了,这个问题先放放,继续下一组。第二组,通过Win32定义的POINT结构(typedefsbuctMgPOINT{LONGx;LONGy;}POINT),来获得当前鼠标光标位置的窗口HWND,这是最直观的武器!常规操作如下:先得到Cursor的POINT(BOOLGetCursorPos(LPPOINT)函数),再用WindowFromPointo这样,我们儿乎可以获得任何打开的有

4、窗口的函数的HWND了!然后通过获取类名的Win32api函数(intGetClassName(HWNDhWnd,LPTSTRIpCIassName,intnMaxCount))得到类名棗这里的IpClassName最好用字符数组地址,nMaxCount就是数组的size了,同时,这种方法解决了第一个问题的麻烦!棗我可以把鼠标放在任何地方!杯_心第三组,这些是用来列举和处理任何窗口的超级武器!通过组合运用EnumWindows和EnumWindowsProc,EnumChildWindows与EnumChildProc,nJ'以扫描桌面所冇窗口并对Z处理!我的理解:(这部

5、分用任务驱动式教学方法棗谁让小弟是老师呢!xixi)任务:得到所冇的窗口的类名。解决办法1:我们会先想到第三组,可以口桌面窗II开始(它是所冇窗II的祖先),依次扌T描,获取类名并存之。有点儿像VisualStdio的Spy++,或者Borland的WinSight32,具体办法如下:(bcb中)在主程序屮,调用EnumWindows,传入YouEnumProc的函数地址作第一个参数,别忘了转换成WNDENUMPROC类型。第二参可NULLo::EnumWindows(reinterpret_castYouEnumProc,NULL);在YouEnumProc函数中,如果

6、第一参HWND==NULL,就跳离(returnFALSE;),可以结束啦!然后,把类名数组准备好,得到类名,存Z。返回真值,继续下一次扫描。看起來并不复杂,是一种两数递归。但是我可会解释!面啊!:p笫二种解决方法:简单、直观棗自己想岀來的,颇得意首先准备一个时钟,一种存类名方法(我用TMemo)在定吋器处理函数中:1、得到当前cursor的点位宜2^再用WindowFromPoint,3、然后得到类名,放到TMemo里这样可以用鼠标获得你想要的窗口(包括按钮等),只要鼠标在窗口放一会儿。。。哈哈第三种方法:其实利用FindWindow和循环结构也应该可以总结:其实得到H

7、WND的方法很多,比如知道了窗口层次,依次向卜-扫。。。在说第三种呢!但我觉得,我的方法最肓接有效,你说呢?欢迎大家少我联系,并讨论这个问题!有关这个问题我还有许多疑问,比如HWND与ID的转换,在如IE页面中的表单控件的HWND或ID,还是其他的东东,总Z是能识别他的东西。。。这个我很困惑,没办法!不清楚地方,人家要参照MSDN啊!(好东西呀!)下面是來自微软的例子,这个枚举所有的窗口,然后向窗口发送关闭的消息。#includeBOOLCALLBACKEnumWindowsProc(HWNDhwnd,DWORDIParam)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。