关于 CoreDll.dll 里面的API:FindWindow

最近在做Windows Mobile 6.1/6.5的UI Automation,其中涉及到一个很常用的API:FindWindow

 

MSDN上的链接如下:

http://msdn.microsoft.com/en-us/library/aa929233.aspx

 

Syntax:

 

这是个很简单的API,我所要和您分享的经验是:

 

一、中文问题

 

我在.Net中用PInvoke封装它,曾经遇到过英文标题的窗体能够找到、中文标题的窗口无法找到的问题,后来加上了 CharSet = CharSet.Unicode 的属性,完美解决。

 

如下:

 

 

二、 lpClassName 与 lpWindowName 都相同的窗体,调用 FindWindow 查找会失败

 

这是最近在 Windows Mobile 6.5 系统上发现的一个现象,其余版本尚未检验。例如,有3个窗体的ClassName都是Dialog,WindowName都是“电话”,如果你调用FindWindow("Dialog", @"电话"),得到的结果是 NULL,GetLastError得到的是ERROR_INVALID_HANDLE。

 

目前我尚无很好的解决办法,唯一能做的就是枚举出所有窗体,然后根据窗体的Handle查找其ClassName、WindowName,看看哪些符合ClassName=="Dialog"、WindowName=="电话",然后再通过筛选出来的窗体是否含有我期望的Controls来判断究竟哪一个窗体才是我真正想要的。

 

各位有什么好办法没有,请赐教,多谢!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值