| 订阅 | 在线投稿
分享
 
 
当前位置: 王朝网络 >> delphi >> win32 API窗口句柄的获得——我的经验 win32 API chuang kou ju bing de huo de —— wo de jing yan
 

win32 API窗口句柄的获得——我的经验

2006-12-17 07:42:56 编辑來源:互联网 繁體版 评论
 
 
本文为【win32 API窗口句柄的获得——我的经验】的汉字拼音对照版显示拼音
  win32 APIchuangkoujubingdehuodewodejingyan

  

  win32 APIchuangkoujubingdehuodewodejingyan chucixiewendangwenbibutongchangdedifangyijilijiecuowuzhichuwanggeweipengyouduoduozhizheng

  zhepianwenzhangshiguanyuruhehuoquchuangkoujubingyijiyounaxiehanshukegong使shiyongdejiandantaolunkeshiyongyuvcbcbqitadewomeiyoushigujikeyibenrenzaibcbhuanjingxiashiyan

  shouxianwohuiluoliechuyixiehuoqujubingdewin32 api hanshuranhoujiandanshuoshuotamendeyongtuzuihoushuoshuowoshizenmelijieheyingyongdejianxiaole

  keyongdewin32 apihanshu

  1.HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)

   HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)

  2.HWND WindowFromPoint(POINT& Point)

  3.BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam)

   BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam)

   BOOL CALLBACK EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam)

   BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)

  yibanyongtu

   duiyudiyizhongdajiadouhenshuxishibuzhuojubingdechangguiwuqiFindWindowzheliangxiongdikeyijieshoubuzhuoduixiangdeleiminghuozhechuangkoubiaotizhiyizuoweishenshufanhuiyigeHWNDkeshiduiyuyibanqunzhongbuyidingzhidaosuoyoudechuangkoubaokuobiaotilananniudengdengdeleiminga——keyijiandanjuliqingwennizhidaozhuomiantubiaodechuangkoudeleimingmaerduiyuchuangkoubiaotiyoukenenghuichuxianxiangtongdebiaotiyoulianggechuangkou——zhiyigechengxudelianggejinchengzheyoushigemafanbahaolezhegewentixianfangfangjixuxiayizu

   dierzutongguowin32dingyidePOINTjiegoutypedef struct tagPOINT { LONG x;

   LONG y;} POINTlaihuodedangqianshubiaoguangbiaoweizhidechuangkouHWNDzheshizuizhiguandewuqichangguicaozuoruxiaxiandedaoCursordePOINTBOOL GetCursorPos(LPPOINT)hanshuzaiyongWindowFromPointzheyangwomenjihukeyihuoderenhedakaideyouchuangkoudehanshudeHWNDleranhoutongguohuoquleimingdewin32 apihanshuint GetClassName( HWND hWnd, LPTSTR lpClassName, int nMaxCount ))dedaoleiming——zhelidelpClassNamezuihaoyongzifushuzudizhinMaxCountjiushishuzudesizeletongshizhezhongfangfajiejuelediyigewentidemafan——wokeyibashubiaofangzairenhedifang!*^_^*

   disanzuzhexieshiyonglailiejuhechulirenhechuangkoudechaojiwuqitongguozuheyunyongEnumWindowsheEnumWindowsProc,EnumChildWindowsyuEnumChildProc,keyisaomiaozhuomiansuoyouchuangkoubingduizhichuli

  wodelijiezhebufenyongrenwuqudongshijiaoxuefangfa——shuirangxiaodishilaoshinexi xi)

  renwudedaosuoyoudechuangkoudeleiming

  jiejuebanfa1womenhuixianxiangdaodisanzukeyizizhuomianchuangkoukaishitashisuoyouchuangkoudezuxianyicisaomiaohuoquleimingbingcunzhiyoudianerxiangVisual StdiodeSpy++,huozheBorland deWinSight32jutibanfaruxiabcbzhong

  zaizhuchengxuzhongtiaoyongEnumWindowschuanruYouEnumProcdehanshudizhizuodiyigeshenshubiewanglezhuanhuanchengWNDENUMPROCleixingdiershenkeNULL::EnumWindows(reinterpret_cast<WNDENUMPROC> YouEnumProc,NULL);

  zaiYouEnumProchanshuzhongruguodiyishenHWND = = NULLjiutiaolireturn FALSE;)keyijieshula

  ranhoubaleimingshuzuzhunbeihaodedaoleimingcunzhi

  fanhuizhenzhijixuxiayicisaomiao

  kanqilaibingbufuduoshiyizhonghanshudiguidanshiwokehuijieshimiana: p

  dierzhongjiejuefangfajiandanzhiguan——zijixiangchulaidepodeyi

  shouxianzhunbeiyigeshizhongyizhongcunleimingfangfawoyongTMemo)

  zaidingshiqichulihanshuzhong

  1dedaodangqiancursordedianweizhi

  2zaiyongWindowFromPoint

  3ranhoudedaoleimingfangdaoTMemoli

  zheyangkeyiyongshubiaohuodenixiangyaodechuangkoubaokuoanniudengzhiyaoshubiaozaichuangkoufangyihuierhaha

  disanzhongfangfaqishiliyongFindWindowhexunhuanjiegouyeyinggaikeyi

  zongjieqishidedaoHWNDdefangfahenduobiruzhidaolechuangkoucengciyicixiangxiasaozaishuodisanzhongnedanwojiaodewodefangfazuizhijieyouxiaonishuone

  huanyingdajiayuwolianxibingtaolunzhegewentiyouguanzhegewentiwohuanyouxuduoyiwenbiruHWNDyuIDdezhuanhuanzairuIEyemianzhongdebiaodankongjiandeHWNDhuoIDhuanshiqitadedongdongzongzhishinengshibietadedong西xizhegewohenkunhuomeibanfa

  buqingchudifangdajiayaoshenzhaoMSDNahaodong西xiya原文】【拼音
 
 
 
 
上一篇《将指定字符串后面的"0"字符截去[原创]》
下一篇《Delphi快捷键速查》
 
 
 
 
 
 
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

如何磨出破洞牛仔裤?牛仔裤怎么剪破洞?

把牛仔裤磨出有线的破洞 1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...

我就是扫描下图得到了敬业福和爱国福

先来看下敬业福和爱国福 今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。 今天该活动正式启动,和去年一样,需要收集“五福”...

冰箱异味产生的原因和臭味去除的方法

有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。 1、很多人有这种习...

 
 
win32 API窗口句柄的获得——我的经验 win32 API窗口句柄的获得——我的经验 初次写文档,文笔不通畅的地方,以及理解错误之处望各位朋友多多指正! 这篇文章是关于如何获取窗口句柄,以及有哪些函数可供使用的简单讨论!可适用于vc、bcb(其他的我没有试,估计可以),本人在bcb环境下试验。 首先我会罗列出一些获取句柄的win32 api 函数,然后简单说说他们的用途!最后说说我是怎么理解和应用的。见笑了! 可用的win32 api函数: 1.HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName) HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName) 2.HWND WindowFromPoint(POINT& Point) 3.BOOL CALLBACK EnumChildProc(HWND hwnd,LPARAM lParam) BOOL CALLBACK EnumChildWindows(HWND hWndParent, WNDENUMPROC lpEnumFunc,LPARAM lParam) BOOL CALLBACK EnumWindows(WNDENUMPROC lpEnumFunc, LPARAM lParam) BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam) 一般用途: 对于第一种,大家都很熟悉,是捕捉句柄的常规武器,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_cast<WNDENUMPROC> YouEnumProc,NULL); 在YouEnumProc函数中,如果第一参HWND = = NULL,就跳离(return FALSE;),可以结束啦! 然后,把类名数组准备好,得到类名,存之。 返回真值,继续下一次扫描。 看起来并不复杂,是一种函数递归。但是我可会解释!面啊!: p 第二种解决方法:简单、直观——自己想出来的,颇得意 首先准备一个时钟,一种存类名方法(我用TMemo) 在定时器处理函数中: 1、得到当前cursor的点位置 2、再用WindowFromPoint, 3、然后得到类名,放到TMemo里 这样可以用鼠标获得你想要的窗口(包括按钮等),只要鼠标在窗口放一会儿。。。哈哈 第三种方法:其实利用FindWindow和循环结构也应该可以 总结:其实得到HWND的方法很多,比如知道了窗口层次,依次向下扫。。。在说第三种呢!但我觉得,我的方法最直接有效,你说呢? 欢迎大家与我联系,并讨论这个问题!有关这个问题我还有许多疑问,比如HWND与ID的转换,在如IE页面中的表单控件的HWND或ID,还是其他的东东,总之是能识别他的东西。。。这个我很困惑,没办法! 不清楚地方,大家要参照MSDN啊!(好东西呀!)
󰈣󰈤
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
时尚秀气模特裴裴(8)
时尚秀气模特裴裴(7)
时尚秀气模特裴裴(6)
时尚秀气模特裴裴(5)
白墙黑瓦
广州东郊[原创]
八美至丹巴的东谷天然盆景
不一样的
 
>>返回首页<<
 
 
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 热帖排行
 
 
 
 
©2005- 王朝网络 版权所有