51Testing软件测试论坛

标题: 用自己的DLL怎样才能得到BCG的ToolBar按钮个数,看我的代码? 已解决 [打印本页]

作者: CHJBBG    时间: 2010-1-6 08:45
标题: 用自己的DLL怎样才能得到BCG的ToolBar按钮个数,看我的代码? 已解决
extern "C" __declspec(dllexport) int GetButtnsCount(HWND BCGhwnd)
{
        int buttons = 0;
        CBCGPToolBar pCWnd;
        pCWnd.Attach(BCGhwnd);
         buttons = pCWnd.GetCount();
        pCWnd.Detach();
         Return buttons;
}

我查了很多,这方面资料很少,或者其他可行的方法也好


补充1: 这个接口已经可以正常调用了,只是返回值总是0. 做这个的目的是想更精确地定位BCG工具条按钮,不管工具条在哪里,和工具条大小,顺序。 如果有好的其他实现的方法,欢迎指教。

2010-01-23: 直接使用上面的方法应该是不可以了,由于不在同一进程,调用的也不是WINDOWS标准方法,即使有BCG的源码也不可以。在网上找了很久,以及根据大家的回复,把问题重心方在HOOK上,上周我用BCG提供的WORDPAD作为测试对象,自己写了一个 MESSAGE HOOK, 可以改变工具条名称(WINDOWTITLE),但还是没有能够调用BCGTOOLBAR的方法(如GetCount()),如果通过工具条对象指针调用,WORDPAD就挂掉了。 看来这个问题还有得折腾。希望有知道的朋友能多指点一下。

2010-01-29: 方法很简单, 发一个TB_BUTTONCOUNT消息过去就OK了, 折腾了我这么长时间, 还是对windows和VC基础不牢的缘故啊

[ 本帖最后由 CHJBBG 于 2010-1-29 18:29 编辑 ]
作者: lantianwei    时间: 2010-1-6 09:26
代码是在QTP中调不起来呢 还是本身就错误的 ?如果是前者 比较方便 后者 那么比较麻烦 你这种属于跨进程访问 最简单的是发消息 前提是要支持消息 其他的话 像VB是要涉及到虚拟内存 而。NET涉及到代码注入 BCG没接触过 不懂
作者: shanxi    时间: 2010-1-6 09:51
你确定

CBCGPToolBar.Attach方法存在?

官方有相应的api文档吗?
作者: CHJBBG    时间: 2010-1-6 12:28
可以正常调用, 就是个数总是0,
作者: CHJBBG    时间: 2010-1-6 12:29
有attach
作者: lantianwei    时间: 2010-1-6 12:53
标题: 回复 4# 的帖子
我怀疑你DLL 函数本身就没有实现得到ToolBar按钮个数的功能 0只是初始值
作者: 423799223    时间: 2010-1-6 19:50
你最好将日志信息打印出来  以方便调试
作者: CHJBBG    时间: 2010-1-6 20:19
CBCGPToolBar  有GetCount的方法得到工具条的按钮个数。
作者: lantianwei    时间: 2010-1-6 21:53
虽然可能你朋友有辆轿车 但如果你想开 你还是需要先跟他借下的 而不是你直接去开就行了
你这可是跨进程访问
作者: 423799223    时间: 2010-1-10 15:33
这个是跨进程获取其他程序的信息了  不是程序自身获取信息了  复杂得多  网上有相关的文章  基本上C++获Delphi的
作者: CHJBBG    时间: 2010-1-12 17:58
大概理解了,可是有没有什么其他办法嘛, 我有测试对象的源码
作者: shanxi    时间: 2010-1-12 19:09
学习MSAA 写hook
或者学习UIA,写name pipe。
作者: CHJBBG    时间: 2010-1-12 19:35
我今天试着使用跨进程调用
但是遇到内存申请失败,因为是第一次所以不确定这条路是否可行,有没有朋友在这么做过,给个确切的说法,我再去研究研究




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2