vc获得窗口句柄-广西师范大学物理科学与技术学院.pdfVIP

vc获得窗口句柄-广西师范大学物理科学与技术学院.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vc获得窗口句柄 vc获得窗口句柄 vvcc获获得得窗窗口口句句柄柄 2008-01-1823:11 1. HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName) 1. HWND FindWindow(LPCTSTR lpClassName,LPCTSTR lpWindowName) 11.. HHWWNNDDFFiinnddWWiinnddooww((LLPPCCTTSSTTRRllppCCllaassssNNaammee,,LLPPCCTTSSTTRRllppWWiinnddoowwNNaammee)) HWND FindWindowEx(HWND hwndParent,HWND hwndChildAfter,LPCTSTR lpClassName,LPCTSTR lpWindowName) 2. HWND WindowFromPoint(POINTPoint) 2. HWND WindowFromPoint(POINTPoint) 22.. HHWWNNDDWWiinnddoowwFFrroommPPooiinntt((PPOOIINNTTPPooiinntt)) 3. 4 3. 4 33.. 44组语句 BOOL CALLBACKEnumChildProc(HWNDhwnd,LPARAMlParam) BOOL CALLBACKEnumChildWindows(HWNDhWndParent,WNDENUMPROC lpEnumFunc,LPARAMlParam) BOOL CALLBACKEnumWindows(WNDENUMPROClpEnumFunc,LPARAMlParam) BOOL CALLBACKEnumWindowsProc(HWNDhwnd, LPARAMlParam) 一般用途: 对于第一种,大家都很熟悉,是捕捉句柄的常规武器,FindWindow这两兄弟,可以接 受捕捉对象的类名或者窗口标题之一,作为参数,返回一个HWND。可是对于一般群众, 不一定知道所有的窗口(包括标题栏、按钮等等)的类名啊!——可以简单举例,请问你知 道桌面图标的窗口的类名吗?而对于窗口标题,有可能会出现相同的标题,有两个窗口—— 指一个程序的两个进程,这又是个麻烦吧!好了,这个问题先放放,继续下一组。 第二组,通过win32定义的POINT结构(typedef struct tagPOINT { LONG x,LONG y;} POINT),来获得当前鼠标光标位置的窗口HWND,这是最直观的武器!常规操作如下: 先得到Cursor的POINT(BOOL GetCursorPos(LPPOINT)函数),再用 WindowFromPoint。 这样,我们几乎可以获得任何打开的有窗口的函数的HWND了!然后通过获取类名的win32 api函数(int GetClassName(HWND hWnd, LPTSTR lpClassName,int nMaxCount))得到 类名——这里的lpClassName最好用字符数组地址,nMaxCount就是数组的size 了,同时, 这种方法解决了第一个问题的麻烦!——我可以把鼠标放在任何地方!*^_^* 第三组,这些是用来列举和处理任何窗口的超级武器!通过组合运用EnumWindows 和EnumWindowsProc,EnumChildWindows与EnumChildProc,可以扫描桌面所有窗口并对 之处理!我的理解:(这部分用任务驱动式教学方法——谁让小弟是老师呢!xi xi)任务:得 到所有的窗口的类名。 1:解决办法: 我们会先想到第三组,可以自桌面窗口开始(它是所有窗口的祖先),依次扫描,获取 类名并存之。有点儿像Visual Stdio的Spy++,或者Borland 的WinSight32,具体办法如下: (bcb中)在主程序中,调用EnumWindows,传入YouEnumProc的函数地址作第一个参 数,别忘了转换成WNDENUMPROC类型。第二参可NULL。 ::EnumWindows(reinterpret_castYouEnumProc,NULL);在YouEnumProc函数中,如果第 一参HWND= = NULL,就跳离(return FALSE;),可以结束啦!然后,把类名数组准备好, 得到类名,存之。返回真值,继续下一次扫描。看起来并不复杂,是一种函数递归。但是我 可会解释!面啊!: p 2:解决方法: 简单、直观——自己想出来的,颇得意

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档