我想获取另外一个应用程序的某窗口中一个按钮,该应用程序是VB写的,我已经获取该窗口的句柄wndHandle,显示在这个按钮上的文字是:确定。我现在通过以下代码获取该按钮的句柄但始终是0,FindWindowEx(wndHandle, 0, 'ThunderRT6CommandButton', '确定');然后我尝试使用EnumChildWindows,虽然能获取该窗体中所有的按钮,但是我不知道怎么判断哪个按钮是那个确定按钮,因为通过GetWindowText和SendMessage尝试获取按钮的文本都是空,通过Spy++查看,发现该窗体中所有按钮的Caption都是空,有什么办法获取确定按钮的句柄吗?

解决方案 »

  1.   

    肯定是把Caption用别的方式实现了
      

  2.   

    你是说Caption不是文本?而是图片之类的?
      

  3.   

    If the lpszWindow parameter is not NULL, FindWindowEx calls the GetWindowText function to retrieve the window name for comparison.如楼上所说,标题应该是自己实现的。可以事先取得该button的rect区域的像素,在之后的遍历过程中,依据取得的句柄,进一步取得rect区域,两者进行像素比较——此法准确性会受到屏幕像素变化的影响
      

  4.   

    再说一次:我可以确定Caption是文本,因为我有这个程序的源代码,是直接设置的Caption,并非自己实现的
      

  5.   

    那你能解释为什么GetWindowText取不到东西呢?既然你有源码,能了解到,控件的caption是怎么画出来的?