51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3015|回复: 12
打印 上一主题 下一主题

[原创] 用自己的DLL怎样才能得到BCG的ToolBar按钮个数,看我的代码? 已解决

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-1-6 08:45:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-1-6 09:26:06 | 只看该作者
代码是在QTP中调不起来呢 还是本身就错误的 ?如果是前者 比较方便 后者 那么比较麻烦 你这种属于跨进程访问 最简单的是发消息 前提是要支持消息 其他的话 像VB是要涉及到虚拟内存 而。NET涉及到代码注入 BCG没接触过 不懂
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-1-6 09:51:49 | 只看该作者
你确定

CBCGPToolBar.Attach方法存在?

官方有相应的api文档吗?
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-1-6 12:28:17 | 只看该作者
可以正常调用, 就是个数总是0,
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2010-1-6 12:29:17 | 只看该作者
有attach
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2010-1-6 12:53:23 | 只看该作者

回复 4# 的帖子

我怀疑你DLL 函数本身就没有实现得到ToolBar按钮个数的功能 0只是初始值
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2010-1-6 19:50:22 | 只看该作者
你最好将日志信息打印出来  以方便调试
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-1-6 20:19:08 | 只看该作者
CBCGPToolBar  有GetCount的方法得到工具条的按钮个数。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-1-6 21:53:25 | 只看该作者
虽然可能你朋友有辆轿车 但如果你想开 你还是需要先跟他借下的 而不是你直接去开就行了
你这可是跨进程访问
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-1-10 15:33:05 | 只看该作者
这个是跨进程获取其他程序的信息了  不是程序自身获取信息了  复杂得多  网上有相关的文章  基本上C++获Delphi的
回复 支持 反对

使用道具 举报

该用户从未签到

11#
 楼主| 发表于 2010-1-12 17:58:50 | 只看该作者
大概理解了,可是有没有什么其他办法嘛, 我有测试对象的源码
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2010-1-12 19:09:48 | 只看该作者
学习MSAA 写hook
或者学习UIA,写name pipe。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
 楼主| 发表于 2010-1-12 19:35:07 | 只看该作者
我今天试着使用跨进程调用
但是遇到内存申请失败,因为是第一次所以不确定这条路是否可行,有没有朋友在这么做过,给个确切的说法,我再去研究研究
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-27 01:28 , Processed in 0.074049 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表