Delphi 下使用EnableWindow函数的问题 本帖最后由 xxcpsdht 于 2010-05-06 23:43:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 WindowFromPoint得到的顶级窗口,查找窗口中的空间需要再调用ChildWindowFromPoint。 但是我发现所指向的的按钮的确是灰化的按钮类名和标题名都正确但是却不能对其进行操作比如EnableWindowPostMessage也不行我用遍历子窗口的办法来取得这个灰化按钮的句柄 类名 标题名和我用鼠标取得的句柄 类名 标题名来进行比对完全一样但是用鼠标取得的办法不能对其进行操作但是用遍历子窗口的就可以不知道这是什么原因还请教各位大大 WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内 帮你找到的资料: 函数功能:该函数确定属于父窗口的哪一个子窗口(如果存在的话)包含着指定的点。该函数可以忽略不可见的、禁止的和透明的子窗口。 函数原型:HWND ChidWindowFromaPointEx(HWND hwndParent,POINT pt,UNIT uFlags); 参数: hWndParent:父窗口句柄。 pt:指定一个POINT结构,该结构定义了被检查的点的坐标。 uFlags:指明忽略的子窗口的类型。该参数可以是下列参数的组合。 CWP_ALL:不忽略任一子窗口。CWP_SKIPINVISIBLE:忽略不可见的子窗口。 CWP_SKIPDISABLE:忽略禁止的子窗口。CWP_SKIPTRABSPARENT:忽略透明子窗口。 返回值:返回值为包含该点并且满足由uFlags定义的规则的第一个子窗口的句柄。如果该点在父窗口内,但在任一满足条件的子窗口外,则返回值为父窗口句柄。如果该点在父窗口之外或函数失败,则返回值为NULL。 Handle正确就能操作,一般Disable的按钮,用WindowFromPoint是取不到句柄的 GetCursorPos(pMouse); hWindow := WindowFromPoint(pMouse); Windows.ScreenToClient(hWindow, pMouse); hClientWindow := ChildWindowFromPoint(hWindow, pMouse); if hClientWindow <> 0 then hWindow := hClientWindow; delphi有引用传参的吗? 用DBGrid显示记录时?怎么替换指定列下的指定值? 一个SQL问题,请指教~ 菜的问题,我的DELPHI怎么用ExpressQuantumGrid 4?我安装后怎么做? 请教高手,程序使用indy控件,2000/xp下无法关机 佳能相机开发 取景 在双核上发生错误 郁闷啊,谁来看看~! delphi2007 安装spcomm控件的方法? 有关餐饮连锁与电脑技术结合的思考。。。。。 csdn为什么这么冷清? 用delphi好多年,第一次碰到奇怪的内存报错 望高手帮忙看下 谢谢 帮忙查错,无法实现将临时数组中的数据筛选和转存
类名和标题名都正确
但是却不能对其进行操作
比如EnableWindow
PostMessage也不行我用遍历子窗口的办法来取得这个灰化按钮的句柄 类名 标题名
和我用鼠标取得的句柄 类名 标题名来进行比对
完全一样
但是用鼠标取得的办法不能对其进行操作
但是用遍历子窗口的就可以
不知道这是什么原因
还请教各位大大
WindowFromPoint函数不获取隐藏或禁止的窗口句柄,即使点在该窗口内 帮你找到的资料: 函数功能:该函数确定属于父窗口的哪一个子窗口(如果存在的话)包含着指定的点。该函数可以忽略不可见的、禁止的和透明的子窗口。 函数原型:HWND ChidWindowFromaPointEx(HWND hwndParent,POINT pt,UNIT uFlags); 参数: hWndParent:父窗口句柄。 pt:指定一个POINT结构,该结构定义了被检查的点的坐标。 uFlags:指明忽略的子窗口的类型。该参数可以是下列参数的组合。 CWP_ALL:不忽略任一子窗口。CWP_SKIPINVISIBLE:忽略不可见的子窗口。 CWP_SKIPDISABLE:忽略禁止的子窗口。CWP_SKIPTRABSPARENT:忽略透明子窗口。 返回值:返回值为包含该点并且满足由uFlags定义的规则的第一个子窗口的句柄。如果该点在父窗口内,但在任一满足条件的子窗口外,则返回值为父窗口句柄。如果该点在父窗口之外或函数失败,则返回值为NULL。
hWindow := WindowFromPoint(pMouse);
Windows.ScreenToClient(hWindow, pMouse);
hClientWindow := ChildWindowFromPoint(hWindow, pMouse);
if hClientWindow <> 0 then hWindow := hClientWindow;